Java由淺入深講解繼承上
繼承同樣是面向對象程序的特點
1.什么是繼承
所謂繼承就是抽取類的共性,進而實現代碼的復用
繼承的關鍵字是extends
現在定義一個類Tree,里面有樹的名字、來源和科屬,方法是打印樹的形態(tài)特征,如下:
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中的成員,不妨實例化一個對象來看看:

實例化的意義除了實現代碼的復用之外,還有則是實現多態(tài),多態(tài)會在后面文章講到
2.繼承的細節(jié)
在了解什么是繼承之后來對繼承的一些細節(jié)進行深入了解
2.1super關鍵字
super在非靜態(tài)方法中使用,主要作用是在子類中訪問父類的成員,它可以作用于子類的成員變量、成員方法和構造方法,在構造方法的使用在子類構造方法中講解
- 子類成員和父類成員重名
子類成員和父類成員重名會優(yōu)先使用子類的成員,這一點很好證明,如圖:

我們現在在Treed的trait中加入如下語句:
public void trait() {
System.out.println(super.name+"高可以達到30米");
}結果如圖:

如果是方法重名,會構成重載或重寫,重寫是多態(tài)內容,這里只簡單介紹一下,就是父類和子類方法的返回值、方法名和參數都是相同的,如果是重載,可通過參數來判斷是訪問的誰的方法,重寫的話,在方法中添加 “super.方法名” 來訪問父類的方法

2.2子類的構造方法
因為子類是繼承了父類的成員的,所以在寫子類構造方法時第一件事就是調用父類的構造方法,這里使用的依舊是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()
2.3super和this區(qū)別
| 相同點 | 不同點 |
| 只能在類的非靜態(tài)方法中用來訪問非靜態(tài)成員方法和成員變量 | this是當前對象的引用,super相當于是在子類中引用繼承父類的那部分成員 |
| 在構造方法中使用只能放在第一行(所以構造方法中不能同時出現super()和this()) | this是非靜態(tài)成員方法的一個隱藏參數,super不是 |
繼承的內容就先到這里,繼承剩下的內容包括后面多態(tài)的內容所使用的類都會是本篇所創(chuàng)建的類
完
到此這篇關于Java由淺入深講解繼承上的文章就介紹到這了,更多相關Java繼承內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java8中stream和functional interface的配合使用詳解
這篇文章主要給大家介紹了關于Java8中stream和functional interface配合使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用java8具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-11-11

