我知道很多编码人员都使用访问器方法来访问某些类字段,这些类字段是其他类私有的,但是我想知道为什么。为什么他们不喜欢受保护的字段,而女巫只能从同一包的类而不是访问器访问?我的意思是,如果没有严重的原因,那只是代码浪费。
最佳答案
当您仅定义访问字段的方法时,将受到方法的限制。您无法做某事没有方法。
考虑此类:
public class Account {
private int balance = 0;
public int getBalance() {
return balance;
}
public void insert(int amount) {
if(amount > 0) {
balance += amount;
}
}
public void withdraw(int amount) {
if(amount > 0 && amount =< balance) {
balance -= amount;
}
}
}
您可以通过插入和提取来更改帐户的余额,也可以检查它是什么。但是,如果您可以直接使用余额,则可以执行一些不可能的事情:
Account acc = new Account();
acc.balance = -10;
此外,受保护实际上更接近于公共而非私有。如果您有私人领域,它将永远是私人的。如果您的字段受到保护,那么任何人都可以随时扩展您的课程并访问该字段。如果打算将其设为私有,并且将其设置为受保护,则当有人对其进行扩展时,它可能会失去其目的(并且他扩展的事实不再有意义,因为他的新阶级并不遵循超阶级的精神)。