My Class Architecture就是这样。
我有一个界面“myInterface”。我创建了一个实现“myInterface”的类“mySuperMostClass”。现在我创建了一个“myBaseClass”类,它扩展了“mySuperMostClass”。然后我创建“mySubClass”,扩展“myBaseClass”。我已经从“mySubClass”中的“myBaseClass”覆盖了方法“methodA”,“methodB”。
“methodB”从“methodA”调用
现在我为mySubClass创建一个对象,并用“myInterface”实例引用它。当我用myInterface的实例调用methodA时,调用“myBaseClass”的实现。但我希望它称为“mySubClass”。请帮助我这样做。
我正在使用Java 1.5
答案 0 :(得分:1)
首先,我确定你的实际类名不是以小写字母开头的。如果他们这样做,我建议您阅读Java Naming Convention
从父类重写方法时,请确保方法签名保持一致。例如,如果您有一个名为public void method(String input)
的方法,则必须确保在子类中维护相同的签名。
因此,通过阅读您的问题,我认为正确的实现将是这样的:
public interface MyInterface{
}
class MySuperMostClass implements MyInterface{
}
class MyBaseClass extends MySuperMostClass{
public void methodA(){
}
public void methodB(){
}
}
class MySubClass extends MyBaseClass{
@override
public void methodA(){
methodB();
}
@override
public void methodB(){
}
}
注意:我不太确定你的方法的实际签名,因此我将它们保持为无参数。在您的情况下,请确保签名保持不变。
你打电话的方式是这样的:
MyInterface myObject = new MySubClass();
myObject.methodA();