gpt4 book ai didi

java - 如何避免 Java 中的 init override

转载 作者:行者123 更新时间:2023-11-30 08:20:37 24 4
gpt4 key购买 nike

我是 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()?

最佳答案

如果您将 init() 方法设置为final,那么没有人可以覆盖它。

final void init() {
this.acctID = nextID++;
}

http://docs.oracle.com/javase/tutorial/java/IandI/final.html

关于java - 如何避免 Java 中的 init override,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com