我是编码的新手,我对Java中的getter和setter感到困惑。 我知道getter和setter用于封装。但是如果你有一个构造函数来创建一个具有特定性别和长度的人。这两个特征都应该有一个二传手和吸气剂吗?
public Person(Gender gender, Length length) {
this.gender = gender;
this.length = length;
}
this.gender是否可以作为制定者?如果不是,它的功能是什么?
我需要为这些制作一个吸气剂和制定者吗?在代码示例中,我发现他们只有一个吸气剂,但不是一个吸气剂。但我真的不明白为什么。 提前谢谢!
答案 0 :(得分:2)
在代码示例中,我发现他们只有一个getter,但不是一个setter。但我真的不明白为什么。
您描述的功能是在创建Person
对象时,任何人都无法set
gender
和length
。
如果用户愿意,他/她可以根据需要创建具有属性的新 Person
(new Person(...)
)。但是在创建Person
后,您无法set
属性。
但
this.gender = gender
是否可以作为制定者?我似乎无法弄清楚它的功能是什么。
工作作为一个setter(虽然它本身不是一个setter,因为它不是一个函数)。但只能在构造函数中。正如我上面所说的那样。
请注意,如果gender
的{{1}}和length
字段不是Person
,则外部可能private
/ set
set / get方法。
答案 1 :(得分:1)
当您通过调用构造函数方法创建Person对象时,您给出的构造函数示例代码用于设置/初始化Person类的变量。在内部,属性值由此设置。所以,你可以说它的功能就像二传手。在此之后,您只需要获取和获取这些属性所拥有的值。
但是,您也可以为每个属性编写特定的setter方法,以便在显式的同一个Person对象上为每个属性单独设置值。
此致
答案 2 :(得分:0)
面向对象编程中的getter和setter方法用于控制客户端不要在意外行为中更改变量。
public Class Person{
private int gender;
private int length;
public Person(int gender,int length){
this.gender = gender;
this.length = length;
}
public int getGender(){
return this.gender;
}
public void setGender(int setGender){
if(setGender==1 || setGender == 0){
this.gender = setGender;
}else{
this.gender = -1;
}
}
public int getLength(){
return this.length;
}
public void setLength(int setLength){
if(setLength>100){
this.length = setLength;
}else{
this.length = -1;
}
}
}
就像在这个代码示例中一样,如果你对变量有一些约束,并且需要指示客户端以你的方式更新这些变量,你应该使用getter和setter方法来控制你的变量更新方式。
在这个例子中,如果客户的性别不同于0或1(如果它输入无效的性别代码),我们将-1赋值给它的变量,以便看到无效的性别,长度逻辑也相同。