所有類別隱含繼承 java.lang.Object,擁有 toString()、getClass()、wait() 等方法。
| 類型 | 關鍵字 | 方法特徵 | 繼承/實作關鍵字 |
|---|---|---|---|
| 基本類 | class | 全部具體實作 | extends |
| 抽象類 | abstract class | 含抽象方法(無本體)與具體方法混合 | extends |
| 介面 | interface | 全部為抽象方法(Java 8 前) | implements |
public class Fruit {
public void price() { System.out.println("水果價格"); }
public void weight() { System.out.println("水果重量"); }
}
public abstract class Fruit {
public void price() { System.out.println("水果價格"); }
public abstract void weight(); // 必須由子類別實作
}
public interface Fruit {
void price();
void weight();
}
// 繼承基本類
public class Apple extends Fruit {}
// 繼承抽象類:必須實作抽象方法
public class Apple extends Fruit {
@Override public void weight() { System.out.println("蘋果重量"); }
}
// 實作介面:必須實作所有方法
public class Apple implements Fruit {
@Override public void price() { System.out.println("蘋果價格"); }
@Override public void weight() { System.out.println("蘋果重量"); }
}
// 多重實作介面(達成類似多重繼承效果)
public class Apple extends Fruit implements Fruit1, Fruit2 {}
final 修飾類別 → 不可被繼承;修飾方法 → 不可被覆寫interface A extends B),抽象類與基本類同理private 成員不被繼承,protected 允許子類別存取理解 extends(單一繼承類別)與 implements(多重實作介面)的區別,是掌握 Java 繼承體系的關鍵。