存在子类方法时调用的基类方法

时间:2012-09-26 03:07:03

标签: java inheritance override

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

1 个答案:

答案 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();