问题是这样的:我有一个抽象类,该抽象类在其构造函数中完成了一些工作,还有一组实现抽象类的子类:

class AbstractClass {
     AbstractClass(){ /* useful implementation */ }
}

class ConcreteClass1 extends AbstractClass {
     ConcreteClass1(){ super(); /* useful implementation */ }
}

然后,需要定制具体的类,一种解决方案是扩展具体的类:
class CustomizedClass1 extends ConcreteClass1 {
    CustomizedCLass1(){ super(); /* useful implementation */ }
}

但是问题在于自定义类仅需要调用抽象类的构造函数,而无需调用具体类的构造函数。

您如何实现的?更改类(class)关系的建议是有效的。

编辑:具体示例是ConcreteClass1和CustomizedClass1具有不同的数据集(ConcreteData1和CustomizedData1),并且它是从类的构造函数中的数据库中检索的。问题在于,创建CustomizedClass1的实例将检索两个数据实体。

我知道使用简单继承可能不是最好的选择,这就是为什么我指出更改类关系的建议是有效的。

最佳答案

简单(但是为什么?):

class AbstractClass {
   AbstractClass(){ /* useful implementation */ }
}

class ConcreteClass1 extends AbstractClass {
     ConcreteClass1(){ super(); /* useful implementation */ }
     ConcreteClass1(boolean skip){ super(); }
}
class CustomizedClass1 extends ConcreteClass1 {
     CustomizedCLass1(){ super(true); /* useful implementation */ }
}

关于java - 跳过父级构造函数以调用祖 parent 的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1878558/

10-11 23:09
查看更多