防止方法调用使用子类的方法
|
我有一些原则上类似于以下内容的内容:
public class Generic {
public Generic(){
doStuff();
}
protected void doStuff(){
System.out.println(\"Generic\");
}
}
public class Specific extends Generic {
public Specific(){
super();
}
protected void doStuff(){
super.doStuff();
System.out.println(\"Specific\");
}
}
我得到的错误表明,尽管该方法是从超类中调用的,但它是在调用该方法的子类版本。在上面的示例中,实例化一个新的Specific会同时输出\“ Generic \”和\“ Specific \”,即使doStuff()已由Generic \的构造函数调用。
长话短说,我不要。如果在完全初始化对象之前调用子类,则该子类的方法中会添加一些功能,从而导致问题。我如何在超类的构造函数中强制其使用自己的方法版本,而不是最专门的方法?
没有找到相关结果
已邀请:
2 个回复
爆山
这只是调用Generic \的doStuff()方法,因为在构造父类而未完全构造子类时,初始化的标志为false。我认为这是为什么不希望调用Specific的重写方法的主要原因。
疾很毋悲