子函数调用父函数,父函数调用的方法,子函数重写了,那么最后父函数调用的是自己的方法,还是子函数的方法。

Q:子类调用父类的方法,父类中某个方法所调用的方法,子类也重写了,那么最后父类中的方法调用的是自己的方法,还是子类的方法。

A:调用的是子类的方法。

    看代码:

public class Parent {
    public void usedMethod(){
        say();
    }
    public void say(){
        System.out.println("this is the parent!");
    }
}
public class Child extends Parent {
    public static void main(String[]args){
        Child child=new Child();
        child.usedMethod();
    }
    public void say(){
       /*super.say();*/
        System.out.println("this is child");
    }
}

result:

    this is child!

    Process finished with exit code 0

    个人理解:

    继承其实将父类的成员变量和成员方法拷贝到自身的内存空间,对于重写的方法,就不用拷贝了。

Q:如果子类想让父类调用父类的方法,而不是子类的方法,怎么办呢?

A:在子类的方法中显示调用super.***。

看代码:

    

public class Child extends Parent {
    public static void main(String[]args){
        Child child=new Child();
        child.usedMethod();
    }
    public void say(){
        super.say();
       /* System.out.println("this is child");*/
    }
}


result:

    

this is the parent!

Process finished with exit code 0
父函数已经写好了,当要重写父函数的方法时,要注意父函数别的方法有可能会调用,尽量别重写,可以采用重载。

猜你喜欢

转载自blog.csdn.net/bird_one/article/details/79685129