ins*_*ity 1 java inheritance subtyping
假设我有4类:A,B,SA和SB其中B extends A
和SB extends 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构造函数和一个protected构造函数:
private SA a;
public A() {
   this(new SA());
}
protected A(final SA a) {
   this.a = a;
}
然后在B:
public B() {
   super(new SB());
}
| 归档时间: | 
 | 
| 查看次数: | 1317 次 | 
| 最近记录: |