问题是这样的:我有一个抽象的类,它在其构造一些工作,一组实现抽象类的子类:跃过父类的构造调用祖父母的
class AbstractClass {
AbstractClass(){ /* useful implementation */ }
}
class ConcreteClass1 extends AbstractClass {
ConcreteClass1(){ super(); /* useful implementation */ }
}
然后,具体类需要进行定制和一种解决方案是为了延长水泥类:
class CustomizedClass1 extends ConcreteClass1 {
CustomizedCLass1(){ super(); /* useful implementation */ }
}
但问题是,定制类只需要调用抽象类的构造函数,而不是具体的类的构造函数。
你是如何做到这一点的?改变班级关系的建议是有效的。
编辑:具体的例子是ConcreteClass1和CustomizedClass1具有不同的数据集(ConcreteData1和CustomizedData1),它从类的构造函数中从数据库中检索。问题是创建CustomizedClass1的实例将检索两个数据实体。
我知道,使用简单的继承可能不是最好的事情,这就是为什么我指出改变类的关系的建议是有效的。
如果您不调用ConcreteClass1构造函数,它不是'ConcreteClass1'。 – 2009-12-10 04:06:33
几个答案显示了一些技巧来做到这一点,但这在Java和OO中非常不自然。最好的答案会挑战你的对象设计,并鼓励你用is-A和has-A关系来思考。 – 2009-12-20 20:51:55
但是发展速度有时也很重要,不是吗? – mlvljr 2009-12-21 17:49:13