繼承允許在現有類基礎上建立新類,自動獲得父類的屬性與方法。以 Rectangle 為基礎擴充 FillRect 為例:
import Shapes.Rectangle;
class FillRect extends Rectangle {
// 自動擁有 width、height、getArea() 等成員
}
使用 extends 關鍵字即可實現繼承,新類僅需添加或覆寫所需功能。
子類可透過同名方法覆寫父類實現。例如重寫 drawRect() 以繪製填滿矩形而非輪廓:
private String makeString(char ch, int num) {
StringBuffer str = new StringBuffer();
for (int i = num; i > 0; i--) str.append(ch);
return str.toString();
}
public void drawRect() {
for (int i = height; i > 0; i--)
System.out.println(makeString('#', width));
}
注意:final 修飾的方法不可覆寫。另需定義新建構子以區分類別實例。
介面僅包含抽象方法宣告,所有方法隱含 public abstract,欄位隱含 public static final。類別使用 implements 實現介面,且可同時實現多個介面:
public interface Shape {
void draw();
}
class Circle implements Shape { public void draw() { ... } }
class Rectangle implements Shape { public void draw() { ... } }
介面讓不同類別共享統一行為契約,是多型設計基石。
父類別引用可指向子類別物件(向上轉型),子類別引用可經由強制轉型指向父類別物件(向下轉型,需實際型別匹配)。同層級兄弟類別間不可互轉。
Y y = new Y();
X x = y; // 向上轉型,Y 繼承自 X
null:不指向任何物件,可作為參數傳遞或初始化預留。this:指向當前物件實例,用於區分同名欄位或傳遞自身引用。super:指向父類別實例,用於呼叫父類建構子或被覆寫的方法。掌握這些核心概念,是撰寫健壯、可擴充 Java 程式的基礎。