调用由子进行重写的父方法,使用另一种方法

时间:2014-03-26 09:51:19

标签: java extension-methods method-overriding

我想从儿子调用父方法,我不知道父方法是如何工作的:

A的方法为:myMethod(double d)

public class B extends A{

    //overrides
    public void myMethod(double d){
         doSomthing();
         super.myMethod(d);
    }

    public void anotherMethod(...){
         super.myMethod(d);
    }

}

instanceOfB.myMethod(d)效果很好。

问题是instanceOfB.anotherMethod(...)它只是执行instanceOfB.myMethod(d)

我希望B的实例运行父级的myMethod 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

你做错了什么。它确实调用了super.myMethod()。我快速汇编了这段代码来测试

public class Test {

    public static void main(String ... args) {
        B b= new B();
        b.anotherMethod(); //the output is 1 which is correct
        b.myMethod(2); //the output is somth and then 2 which is correct
    }

    public static class A {
        public void myMethod(double d) {
            System.out.println(d);
        }
    }

    public static class B extends A{

        //overrides
        public void myMethod(double d){
             doSomthing();
             super.myMethod(d);
        }

        private void doSomthing() {
            System.out.println("somth");
        }

        public void anotherMethod(){
             super.myMethod(1);
        }

    }

}