子函式呼叫父函式,父函式呼叫的方法,子函式重寫了,那麼最後父函式呼叫的是自己的方法,還是子函式的方法。
阿新 • • 發佈:2018-11-10
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