我知道很多编码人员都使用访问器方法来访问某些类字段,这些类字段是其他类私有的,但是我想知道为什么。为什么他们不喜欢受保护的字段,而女巫只能从同一包的类而不是访问器访问?我的意思是,如果没有严重的原因,那只是代码浪费。

最佳答案

当您仅定义访问字段的方法时,将受到方法的限制。您无法做某事没有方法。

考虑此类:

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;


此外,受保护实际上更接近于公共而非私有。如果您有私人领域,它将永远是私人的。如果您的字段受到保护,那么任何人都可以随时扩展您的课程并访问该字段。如果打算将其设为私有,并且将其设置为受保护,则当有人对其进行扩展时,它可能会失去其目的(并且他扩展的事实不再有意义,因为他的新阶级并不遵循超阶级的精神)。

10-05 22:43
查看更多