2 回答
TA贡献1864条经验 获得超2个赞
由于 CheckingAccount 从 Account 继承受保护的字段余额,因此使用super或this关键字访问 CheckingAccount 类中的字段余额并不重要。但是,我更喜欢“这个”。
如果 Account 类(基类)中有一个受保护的方法,而 CheckingAccount 类中有一个被覆盖的方法,那么在这种情况下你必须小心使用super或this,因为它们不是同一个 body 实现!
TA贡献1898条经验 获得超8个赞
我认为您不应该使用任何protected字段来强制封装。提供一种protected void addToBalance(double value)方法将是更清洁的方法。
如果想指定隐式参数,我只是想知道在实践中如何使用它
出于某种学术原因,这里有不同之处:
public abstract class Account {
protected String Id;
protected double balance;
public Account(String Id, double balance) {
this.Id = Id;
this.balance = balance;
}
}
public class CheckingAccount {
// overwrite existing field
protected double balance;
public CheckingAccount(String Id, double balance) {
super(Id, balance);
this.balance = balance;
if(super.balance > 10_000) this.balance += 200;
}
}
添加回答
举报
