首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 面向對象四大特性深度解析:抽象、封裝、繼承、多態

     編輯:Java 綜合教學

核心概念速覽

特性核心思想代碼體現設計目的
抽象忽略非本質細節,提取共性屬性/行為接口、抽象類、類定義降低複雜度,建立領域模型
封裝數據與操作綁定,隱藏內部實現private 字段 + public getter/setter數據安全、實現細節隔離、易維護
繼承子類復用父類邏輯,建立 IS-A 關系extends、super、方法重寫代碼復用、擴展性、多態前提
多態同一接口,不同實現,運行期綁定向上轉型、方法重寫、接口實現、重載解耦、靈活替換、開閉原則

深度拆解

1. 抽象:從具體到本質

例子:Student 類只關注 score、exam(),忽略身高、慣用手等無關屬性。抽象是建模的藝術,決定了系統的邊界與詞彙表。

2. 封裝:不只是 private + getter/setter

  • 數據校驗:setAge(int age) { if (age < 0) throw new IllegalArgumentException(); this.age = age; }
  • 只讀/只寫控制:僅提供 getter 或 setter。
  • 未來兼容:內部存儲從 int age 改為 LocalDate birthday,外部調用 getAge() 完全無感 —— 「你可以改變主意,而不破壞任何客戶代碼」。

3. 繼承:IS-A 原則與里氏替換

  • 子類必須是父類的特化(如 Cat extends Animal),而非單純復用代碼(Util extends ArrayList 即反模式)。
  • final 類/方法禁止繼承/重寫,保護核心邏輯不被篡改。
  • 組合優於繼承:class Car { Engine engine; } 優於 class Car extends Engine。

4. 多態:靜態 vs 動態

類型別名綁定時機典型形式
靜態多態編譯期多態編譯期方法重載、泛型
動態多態運行期多態運行期方法重寫、接口實現、向上轉型
// 動態多態經典場景
List list = new ArrayList<>(); // 接口類型引用指向具體實現
list.add("hello"); // 運行期調用 ArrayList.add()
list = new LinkedList<>(); // 替換實現,業務代碼零修改

最佳實踐原則

  1. 面向接口編程:變量聲明用接口/抽象類,具體實現由 DI 容器注入。
  2. 高內聚低耦合:封裝變化點(策略模式、模板方法模式)。
  3. 里氏替換原則 (LSP):子類必須能無縫替換父類,不破壞契約。
  4. 開閉原則 (OCP):對擴展開放,對修改關閉 —— 多態是關鍵支撐。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved