所以我对“setter”和“getter”方法以及它们是否有用有疑问。
假设我只编写了一个非常基本的程序,如下所示:
public class Account
{
String name;
String address;
double balance;
}
然后,假设我编写另一个使用此“Account”类的类,如下所示:
class UseAccount
{
public static void main(String[] args)
{
Account myAccount = new Account();
Account yourAccount = new Account();
myAccount.name = "Blah blah"
}
}
等等等等
当我写作时myAccount.name = "Blah blah"
,我正在更改“Account”类中变量“name”的值。我可以按照自己的方式编写代码,随意多次执行此操作。然而,我注意到,更好的做法是将“Account”类中的变量设为私有,然后使用“setter”和“getter”方法。所以如果我写以下内容:
public class Account
{
private String name;
private String address;
private String balance;
public void setName(String n)
{
name = n;
}
public String getName()
{
return name;
}
}
我仍然可以通过创建另一个具有类似以下内容的类来更改变量“name”的值:
class UseAccount
{
public static void main(String[] args)
{
Account myAccount = new Account();
myAccount.setName("Blah blah");
}
}
我不明白使用这种方法有什么不同,或者应该防止人们改变私有字段的值。有什么帮助吗?
对于简单的访问器方法,除了样式之外没有任何区别,但您也可以使用它们执行代码,例如:
public void setName(String name) {
if (name == null) {
throw new IllegalArgumentException("Name may not be null");
}
this.name = name;
}
您还可以返回copies来自吸气剂,从而保护您的数据:
private List<String> middleNames;
public List<String> getMiddleNames() {
return new ArrayList<String>(middleNames); // return a copy
// The caller can modify the returned list without affecting your data
}
这些只是两个简单的示例,但是关于如何使用访问器方法的示例有无数。
最好遵循一致的风格,这就是为什么我们总是使用 getters/setters - 所以如果需要的话可以执行这样的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)