上圖中Person類別是父類別,而DemoSuper是繼承它的子類別,而子類別會繼承父類別的方法,
也就是說當ds.print()時,程式的動作應該和父類別的動作一樣是System.out.println("Name="+name+" Age="+age);
但我們在DemoSuper裡另外再定義了一個print()的方法,它的行為則是先印System.out.println("DemoSuper:");
然後再執行super.print();,而這個super.print();就是代表父類別也就是Person的print()方法.
也就是說繼承Person的print()功能,DemoSuper繼承Person的print(),並進行修改,先印了System.out.println("DemoSuper:");
但又偷懶不自己全寫,又再一次呼叫父類別的print()把剩餘的工作做完.
所以super.print()在此例就是呼叫父類別的方法.
在這段程序中,this和super不再是像以前那樣用“.”連接一個方法或成員,而是直接在其後跟上適當的參數,因此它的意義也就有了變化。 super後加參數的是用來調用父類中具有相同形式的構造函數,如1和2處。this後加參數則調用的是當前具有相同參數的構造函數,如3處。當然,在 Chinese的各個重載構造函數中,this和super在一般方法中的各種用法也仍可使用,比如4處,你可以將它替換爲“this.prt”(因爲它繼承了父類中的那個方法)或者是“super.prt”(因爲它
是父類中的方法且可被子類訪問),它照樣可以正確運行。但這樣似乎就有點畫蛇添足的味道
了。
最後,寫了這麽多,如果你能對“this通常指代當前對象,super通常指代父類”這句話牢記在心,那麽本篇便達到了目的,其它的你自會在以後的編程實踐當中慢慢體會、掌握。另外關于本篇中提到的繼承,請參閱相關Java教程。
參考擷錄自http://daredevil316.blogspot.tw/2011/03/memo-javathissuper.html
留言列表