您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java繼承是什么及怎么實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
所謂繼承就是抽取類的共性,進而實現代碼的復用
繼承的關鍵字是extends
現在定義一個類Tree,里面有樹的名字、來源和科屬,方法是打印樹的形態特征,如下:
class Tree { String name; String source; String genu; public void trait() { } }
上面的類除了方法trait外,其它成員都是重復的,所以我們再定義一個類Plant將這些重復的成員抽取出來,如下:
class Plant { String name; String source; String genu; }
然后再讓Tree繼承Plant即可:
class Plant { String name; String source; String genu; } class Tree extends Plant{ public void trait() { } }
其中Tree是子類/派生類,Plant是父類/基類
那么Tree中是否真的有Plant中的成員,不妨實例化一個對象來看看:
實例化的意義除了實現代碼的復用之外,還有則是實現多態,多態會在后面文章講到
在了解什么是繼承之后來對繼承的一些細節進行深入了解
super在非靜態方法中使用,主要作用是在子類中訪問父類的成員,它可以作用于子類的成員變量、成員方法和構造方法,在構造方法的使用在子類構造方法中講解
子類成員和父類成員重名
子類成員和父類成員重名會優先使用子類的成員,這一點很好證明,如圖:
我們現在在Treed的trait中加入如下語句:
public void trait() { System.out.println(super.name+"高可以達到30米"); }
結果如圖:
如果是方法重名,會構成重載或重寫,重寫是多態內容,這里只簡單介紹一下,就是父類和子類方法的返回值、方法名和參數都是相同的,如果是重載,可通過參數來判斷是訪問的誰的方法,重寫的話,在方法中添加 “super.方法名” 來訪問父類的方法
因為子類是繼承了父類的成員的,所以在寫子類構造方法時第一件事就是調用父類的構造方法,這里使用的依舊是super,我們在Plant中寫上一個有三個參數的構造方法:
public Plant(String name, String source, String genu) { this.name = name; this.source = source; this.genu = genu; }
子類的構造方法如下(假設子類沒有自己的成員變量):
public Tree(String name, String source, String genu) { super(name, source, genu); }
有一點需要注意:super()只能在構造方法中的第一行出現
之前在寫構造方法的時候講過:即使用戶沒有寫構造方法,編譯器也會提供一個不帶參數的構造方法,這里也同理,只不過子類構造方法中第一行會加上super()
相同點 | 不同點 |
只能在類的非靜態方法中用來訪問非靜態成員方法和成員變量 | this是當前對象的引用,super相當于是在子類中引用繼承父類的那部分成員 |
在構造方法中使用只能放在第一行(所以構造方法中不能同時出現super()和this()) | this是非靜態成員方法的一個隱藏參數,super不是 |
以上就是“Java繼承是什么及怎么實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。