繼承(inheritance)是面向對象編程的核心機制之一,沒有使用繼承的程序設計,就不能成為面向對象的程序設計。
1.繼承的定義
特殊類的對象擁有一般類的全部屬性與行為,稱為特殊類對一般類的繼承。一個類可以是多個一般類的特殊類,也可以從多個一般類中繼承屬性與行為,但在java語言中,不允許一個類從多個一般類中繼承屬性與行為,即在java語言中,只支持單繼承。
在軟件開發中,通過繼承機制,可以利用已有的數據類型來定義新的數據類型。所定義的新的數據類型不僅擁有新定義的成員,而且還同時擁有舊的成員。因此,類的繼承性使所建立的軟件具有開放性開放性、可擴充性,這是信息組織與分類的行之有效的方法,通過類的繼承關系,使公共的特性能夠共享,簡化了對象、類的創建工作量,增加了代碼的可重用性。
java 中繼承使用關鍵字extends ,語法如下:
[類修飾符] class 子類名 extends 父類名{
語句;
}
在java中,java.lang.Object 類是所有java類的最高層父類,是唯一一個沒有父類的類。如果在類的聲明中未使用extends 關鍵字指明其父類,則默認父類為Object 類。java中的類的繼承關系形成了以Object 類為樹根的樹狀層次結構。例:
public class text{
......;
}
等價於
public class text extends Object{
......;
}
示例:
//Person
public class Person{
String name;
int age;
void eat(String s){
System.out.println(s);
}
void sleep(String s){
System.out.println(s);
}
}
//Teacher
public class Teacher extends Person{
int salary;
String school;
void teach(String s){
System.out.println(s);
}
public static void main(String[] args){
Teacher t = new Teacher();
t.name = "張三"; //實例化Teacher 類對象t
System.out.println("教師"+t.name);
t.eat("吃"); //使用從父類繼承來的成員方法eat()
t.sleep("睡"); //使用從父類繼承來的成員方法sleep()
t.teach("上課"); //使用在Teacher類中定義的teach()方法
}
}
注:成員變量和成員方法可以被繼承,但是構造方法不能被繼承。
