簡談Java語言的繼承
這裡簡談Java語言的三大特性之二——繼承。
Java語言的三大特性是循序漸進的、是有順序性的,應該按照封裝–>繼承–>多態這樣的順序依次學習
繼承的定義
百度百科中這樣定義繼承:繼承是面向對象最顯著的一個特性。它是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的能力。Java繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。
繼承的本質是對某一批類的抽象,從而實現對現實世界更好的建模。舉個通俗易懂的例子:
動物是自然界中某些生物的統稱,(初中生物書上也有「界門綱目科屬種」),在動物之下,又有許多種類,比如說貓、狗、老虎、獅子等等,這些實體的動物既擁有所有動物的特性,又有自身獨有的一些特性,比如老虎頭上有個「王」字等等。
可以說繼承是類和類之間的一種關係,繼承關係的兩個類,一個為父類(基類),另一個為子類(派生類)。子類繼承父類,使用關鍵字:extends
除此之外,類和類之間的關係還有:依賴、組合、聚合等等,需要注意的是,Java中類的繼承只有單繼承,沒有多繼承。
繼承的關鍵字
extends
extends的意思是「擴展」,具體說就是子類是父類的擴展(即派生類是基類的擴展)。
使用時也比較容易,創建新類時,在類名的後面加上extends,再加上繼承的父類名即可:
//父類
public class animal{
//父類的相關屬性及方法
}
//子類
public class tiger extends animal{
//子類的相關屬性及方法
}
繼承的程式碼示例
首先創建一個父類:Animal類
package 繼承示例;
public class Animal {
public void breath(){
System.out.println("animal can breath......"); //父類方法
}
}
再創建一個子類:Tiger類,用來繼承父類
package 繼承示例;
public class Tiger extends Animal {
public void eatMeat(){
System.out.println("Tiger will eat meat......"); //子類方法
}
}
最後創建一個測試主類:test類
package 繼承示例;
import java.util.function.ToDoubleBiFunction;
public class test {
//這是一個測試類
public static void main(String[] args) {
Animal am=new Animal();
am.breath(); //父類對象訪問父類方法,沒有問題
// am.eatMeat(); //父類對象訪問子類方法,編譯報錯!表示無法訪問到
System.out.println("============================================");
Tiger tg=new Tiger();
tg.breath(); //子類對象訪問父類方法,沒有問題
tg.eatMeat(); //子類對象訪問子類方法,沒有問題
}
}
測試結果如下:
animal can breath……
=================================
animal can breath……
Tiger will eat meat……
由此可見,繼承時,子類可以訪問父類和子類的方法,父類只能訪問父類的方法。
注意
-
父類的private方法不能被繼承
-
父類的static方法不能被繼承
-
父類的final方法不能被繼承
-
父類的構造方法不能被繼承
-