假设我有 4 个类:A
、B
、SA
和 SB
,其中 B 扩展一个
和 SB 扩展 SA
。
类 A
具有以下构造函数:
private SA a;
public A() {
a = new SA();
}
显然,当我调用类 B
的构造函数时,因为 B extends A
类 A
的构造函数也被调用。但在这种情况下,我希望
A
的构造函数执行 a = new SB();
而不是 a = new SA();
。
有没有简单的方法不用
更改 A
和 B
的公共(public)接口(interface)?
最佳答案
只需要一个public
构造函数和一个protected
构造函数:
private SA a;
public A() {
this(new SA());
}
protected A(final SA a) {
this.a = a;
}
然后在 B
中:
public B() {
super(new SB());
}
关于java - 在java中调用动态构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19575560/