0

我的班级架构是这样的。

我有一个界面“myInterface”。我创建了一个实现“myInterface”的类“mySuperMostClass”。现在我创建了一个扩展“mySuperMostClass”的类“myBaseClass”。然后我创建扩展“myBaseClass”的“mySubClass”。我已经覆盖了“mySubClass”中“myBaseClass”中的“methodA”、“methodB”方法。

从“methodA”调用“methodB”

现在我为 mySubClass 创建一个对象,并用“myInterface”的实例引用它。当我用 myInterface 的实例调用 methodA 时,会调用“myBaseClass”的实现。但我希望它调用“mySubClass”。请帮助我做到这一点。

我正在使用 Java 1.5

4

1 回答 1

1

首先,我确定您的实际类名不是以小写字母开头的。如果他们这样做,我建议您阅读Java 命名约定

当覆盖父类的方法时,请确保方法签名保持一致。例如,如果您有一个名为 的方法,则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();
于 2012-09-26T03:16:49.993 回答