gpt4 book ai didi

java - 防止方法调用使用子类的方法

转载 作者:行者123 更新时间:2023-12-03 20:47:28 24 4
gpt4 key购买 nike

我有一些原则上类似于以下内容:

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");
}

}

我得到的错误表明,虽然该方法是从父类(super class)调用的,但它正在调用该方法的子类版本。在上面的例子中,实例化一个新的Specific 会打印出“Generic”和“Specific”,即使doStuff() 是由Generic 的构造函数调用的。

长话短说,我不想这样。如果在对象完全初始化之前调用它,子类的方法中有一些附加功能会导致问题。我怎样才能在父类(super class)的构造函数中强制它使用它自己的方法版本,而不是最专业的方法?

最佳答案

我不认为你可以在 Java 中拥有一个函数,即 A) 可以被覆盖,并且 B) 在调用时不会表现出多态性。我建议你做这样的事情来模拟你所询问的行为:

public class Generic {

public Generic(){
doGenericStuff();
}

private final void doGenericStuff() {
System.out.println("Generic");
}

protected doStuff(){
doGenericStuff();
}

}

public class Specific extends Generic {

public Specific(){
super();
}

protected doStuff(){
super.doStuff();
System.out.println("Specific");
}

}

关于java - 防止方法调用使用子类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5658240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com