Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于getter/setter方法的Java问题_Java - Fatal编程技术网

关于getter/setter方法的Java问题

关于getter/setter方法的Java问题,java,Java,我是编程新手,对getter/setter方法有疑问。我对他们如何合作感到有点困惑。比如说,你喜欢这个作品吗 private boolean switchOn; // getter method for instance field public boolean switchOn () { return switchOn; // setter method for instance field public void setOn (boolean on){ this.switch

我是编程新手,对getter/setter方法有疑问。我对他们如何合作感到有点困惑。比如说,你喜欢这个作品吗

private boolean switchOn;
// getter method for instance field
public boolean switchOn () {
    return switchOn;
// setter method for instance field
public void setOn (boolean on){
    this.switchOn = switchOn(on);
}

getter和setter的目的是保持类变量私有,同时仍然能够公开访问它们

在类方法(如setter)的定义中,可以直接通过名称访问类变量。使用getter是多余的


作为旁注,通常将getter和setter函数称为
getVarName
setVarName

不太合适。setter和getter的目的是提供一种检索字段或在类中设置字段的方法。应根据它们的操作(获取或设置)来命名它们。通常,这些字段被声明为私有字段,因为用户不需要知道如何在内部存储这些字段的实现细节。用户只需要知道他们采取或返回什么类型,或者执行什么操作


私有布尔开关设置=false;//默认为关闭
//在该类的后面部分中,将setter和getter定义为
//检索或修改开关设置
公共布尔getSwitchSetting(){
返回开关设置;
}
public void setOn(){//您不需要参数。名称说明了一切
this.switchSetting=true;
}
公共无效抵销(){//同上
this.switchSetting=false;
}
注意:在上面,您可以这样做来设置开关

boolean ON=true;
布尔关=假;
公共无效设置开关(布尔设置){
此.switchSetting=设置;
}
//后来
对象。设置开关(ON);
//或
对象。设置开关(关闭);

使用给定的代码:一点也不。您将得到一个编译时错误,因为没有
开关(布尔)
。每种方法都将直接访问/改变基础状态(在您的情况下,就是
这个。打开
),它们不“相互协作”,它们是独立的方法。一个接受一个值来设置私有值,一个返回私有值。它们的名称应该是一致的,并反映它们正在设置/返回的值。所以基本上使用getter方法来访问私有实例字段,并且可以使用setter方法来修改它?这就是为什么您可以通过setter方法传递参数并使用此方法的原因。switchSetting=setting?我希望这些问题有意义我真的很感谢你的帮助!是的,他们就是这么做的。另外,假设您有一个像String这样的不可变类。你不能直接得到长度,因为如果可以的话,你可以改变它。因此,您可以使用getter来允许访问字段,而不允许有人更改它。在这种情况下,不会声明任何setter。