您可以基於某個父類別對物件的定義加以擴充,而制訂出一個新的子類別定義,子類別可以繼承父類別原來的某些定義,並也可能增加原來的父類別所沒有的定義,或者是重新定義父類別中的某些特性,事實上,在您開始學會使用 "class" 關鍵字定義類別的同時,您也已經使用了繼承的功能,因為在 Java 中,所有的類別都直接或間接的繼承了 java.lang.Object 類別。
類別的繼承非常類似類別的複製,但並不完全是複製,所以我們不將之稱為類別的複製,而稱之為類別的繼承(inheritance)。
並且『繼承』正如其字面上的意義一般,具有階層特性。就『繼承』的字面意義而言,一般人很容易聯想到『誰繼承了
誰』這個問題,就現實社會而言,一般都是『子繼承父』;在Java程式設計的單一繼承中,也是相同的道理我們將被繼承者稱為父類別,繼承者稱為子類別。『子』為何會繼承『父』呢?當然是因為『父』生『子』的緣故。
Encapsulation,Message Passing以及Inheritance是構成Object-Oriented的三大要素,如果某程式語言只具備前面兩項特性,一般成為Object-Based。所謂Inheritance(繼承),是指Sub Class(子類別)繼承Super Class(父類別)後,就會自動取得父類別特性。如果子類別繼承了一個以上的父類別,則稱為Multiple Inheritance(多重繼承)。Java為了避開多重繼承的複雜性, class只允許單一繼承。
Java使用關鍵字extends來表達繼承觀念:
public class Animal {
public String moveMethod() {
return "Unspecified";
}
}
public class Bird extends Animal {
public String moveMethod() {
return "Fly";
}
}
public class Dog extends Animal {
public String moveMethod() {
return "run";
}
}
public class Fish extends Animal {
public String moveMethod() {
return "swim";
}
}
若class宣告時沒有指定extends,則Java會自動extends java.lang.Object。
public class A {
}
和下面的寫法相同
public class A extends java.lang.Object {
}