我是java的新手,我遇到了这样的问题。
public class Account {
private String name;
private double balance;
private static int nextID;
int acctID;
Account(String n, double bal) {
init();
this.name = n;
this.balance = bal;
print();
}
void init() {
this.acctID = nextID++;
}
}
public class SavingsAccount extends Account {
private double interest;
public SavingsAccount(String n, double bal, double interest) {
super(n, bal);
this.interest = interest;
}
void init() {
}
}
类SavingsAccount将使用其init(),这是错误的。我知道我可以这样做来解决问题。
public class Account {
private String name;
private double balance;
private static int nextID;
int acctID;
Account(String n, double bal) {
init();
this.name = n;
this.balance = bal;
print();
}
{
this.acctID = nextID++;
}
}
我想问一下是否有其他方法可以解决这个问题,例如强制其他类使用Account.init()或者不允许其他人使用它们的init()?
答案 0 :(得分:3)
如果您使用init()
方法final
,则无人可以覆盖它。
final void init() {
this.acctID = nextID++;
}
http://docs.oracle.com/javase/tutorial/java/IandI/final.html