Java 要求所有變量、引用、參數、返回值 必須聲明類型,編譯器嚴格檢查類型匹配。類型不符直接編譯報錯:
Human aPerson; aPerson = new Cup(); // 編譯錯誤:found Cup, required Human
| 轉換方向 | 術語 | 是否需強轉 | 數據風險 | 示例 |
|---|---|---|---|---|
| 低精度 → 高精度 | 寬化轉換 | 自動 | 無損失 | int → double |
| 高精度 → 低精度 | 窄化轉換 | 必須強轉 (type) | 可能截斷/溢出 | double → int, long → int |
int a = 3; double b = a; // 自動寬化 int c = (int) 1.23; // 手動窄化,結果為 1
Parent p = new Child();),自動完成,無需強轉。class Cup { void drink() { System.out.println("喝水"); } }
class BrokenCup extends Cup {
@Override void drink() { System.out.println("漏水了..."); }
}
Cup cup = new BrokenCup(); // 向上轉型
cup.drink(); // 輸出 "漏水了..." —— 動態綁定,多態生效
BrokenCup bc = (BrokenCup) cup;)。ClassCastException。建議配合 instanceof 守衛。java.lang.Object。toString()、equals()、hashCode()、getClass()、clone()、finalize()、wait/notify 等。Object 的通用邏輯(如通用容器、工具方法),配合向上轉型實現極致復用。
概念 關鍵規則 典型場景 基本類型寬化 自動,無損失 int → long → float → double基本類型窄化 強轉,可能損失 double → int引用向上轉型 自動,安全 方法參數、集合存儲、多態調用 引用向下轉型 強轉,需 instanceof 守衛 獲取子類特有方法/屬性 Object 根類型 所有類隱式父類 通用工具、容器元素類型 多態 動態綁定,覆寫方法 面向抽象編程、策略模式、模板方法