我知道很多编码人员使用访问器方法来访问一些对其他类来说是私有(private)的类字段,但我想知道为什么。为什么他们不喜欢只能从同一包的类而不是访问器访问的 protected 字段?我的意思是,如果没有严重的原因,那只是代码浪费。
最佳答案
当你只定义访问一个字段的方法时,你会受到方法的限制。你不能做没有方法的事情。
考虑这个类:
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;
此外,protected 实际上更接近 public 而不是 private。如果你有一个私有(private)领域,它将永远是私有(private)的。如果您的领域受到保护,任何人都可以随时扩展您的类(class)并访问该领域。如果它打算是私有(private)的,而你将它设置为 protected ,那么当有人扩展它时它可能会失去它的目的(而且他扩展的事实不再有意义,因为他的新类的行为不符合父类(super class)的精神)。
关于Java : Accessor methods vs protected fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322734/