调用超类方法

时间:2014-03-12 06:49:34

标签: java android

我的A类有一个方法sum()

现在,类B扩展了类A并覆盖了sum()方法,

C扩展了类B,并且还覆盖了sum()方法。

现在我创建了一个类C的实例。

我的问题是:如何通过A实例调用课程sum()中的课程C C方法?其中一种方法是在super.sum()B中致电C。还有其他办法吗?

4 个答案:

答案 0 :(得分:1)

内部B& amp; C&和方法放置super(),以便它调用A的sum方法。

B extends A{
sum(){
super();
//dosomething..
}
}

答案 1 :(得分:1)

你可以使用super.sum()在B中调用A的总和,但我不认为你可以用C来做。

最好的方法是在B&C和C&C的总和中调用super.sum()

答案 2 :(得分:1)

你可以这样试试:

class A{
    public void method() {
        System.out.println("a");
    }
}
class B extends A {
    public void method() {
        System.out.println("b");
    }
    public void callmethod(){
        super.method();
    }
}
class C extends B {
    public void method() {
        System.out.println("c");
    }
    public void callmethod(){
        super.callmethod();
    }
}
public class Test {

public static void main(String[] args) {
    C c = new C();
    c.callmethod();
}

}

答案 3 :(得分:1)

在C的任何方法中都没有调用方法A.sum()的语法方法。你需要在B中放置一个桥接方法来执行此操作:

public class A {
    public void sum() { System.out.println("A.sum()"); }
}

public class B extends A {
    @Override
    public void sum() { System.out.println("B.sum()"); }
    protected final void superSum() { super.sum(); }
}

public class C extends B {
    @Override
    public void sum() { System.out.println("C.sum()"); }
    public void someMethod() {
        sum();
        super.sum();
        superSum();
    }
}

调用C.someMethd()打印出

C.sum()
B.sum()
A.sum()