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
父函数已经写好了,当要重写父函数的方法时,要注意父函数别的方法有可能会调用,尽量别重写,可以采用重载。