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

《Thinking in Java》筆記第 9 章:多態機制、抽象類與接口設計哲學

     編輯:Java 相關知識

多態核心概念

多態允許將子類對象視為父類類型處理,「一個接口,多種實現」。編譯期綁定父類類型,運行期根據對象實際類型動態分派方法調用。

抽象類與抽象方法

  • 包含抽象方法的類必須聲明為 abstract
  • 抽象類不可實例化,旨在被繼承
  • 子類必須實現所有抽象方法,否則子類也為抽象類
  • 可無抽象方法也聲明 abstract,單純禁止實例化
  • 抽象類可包含具體方法,支持代碼復用與重構(向上提取公共邏輯)

接口:完全抽象的契約

  • interface 產生完全抽象類,無任何實現
  • 建立類之間的「協議」
  • 實現多重接口繼承:一個類可實現多個接口,實現「多重繼承」變體
  • 接口字段隱式 static final(常量)
  • 實現接口後成為普通類,可繼承
  • 接口方法實現必須 public
  • 向上轉型對象:普通類、抽象類、接口無區別

完全解耦:策略模式與適配器模式

  • 策略模式:方法包含固定算法骨架,策略接口封裝變化部分。通過傳入不同策略實現動態行為切換
  • 適配器模式:構造器接收現有接口,產出目標接口對象。將不兼容接口適配為客戶端期望接口

Java 中的「多重繼承」

  • 組合多個類接口稱為多重繼承
  • Java 限制:僅一個類可有實現,其餘必須為接口
  • 可向上轉型為每個接口(各自獨立類型)
  • 語法:class A extends ConcreteClass implements Interface1, Interface2 — 具體類在前,接口在後
  • 若基類無方法定義/成員變量,優先選擇接口而非抽象類

接口繼承與組合

  • extends 通常單類,但接口間可 extends Interface1, Interface2 多繼承
  • 組合多接口時同名方法易混淆,降低可讀性,需謹慎設計

適配接口

  • 方法接受接口參數,即為任意實現類提供適配入口
  • 接口使類結構與算法解耦

接口字段:常量定義工具

  • 接口字段自動 static final
  • 可用非常量表達式初始化(類加載時執行)
  • 值存儲在接口的靜態存儲區,不屬於實例

嵌套接口

  • 實現 private 接口:強制定義方法且不洩露類型信息
  • 接口內嵌套接口自動 public,不可 private
  • 實現外部接口不要求實現嵌套接口
  • private 接口僅定義類內部可實現

接口與工廠模式

  • 工廠方法模式:調用工廠對象創建方法獲取接口實現,而非直接 new
  • 理論上實現與客戶端代碼完全隔離,支持透明替換實現
  • 引入間接層理由:構建框架、延遲綁定、運行時配置

總結指導原則

  • 幾乎任何創建類的地方都可改為接口+工廠
  • 抽象應由真實需求驅動,而非預防性設計
  • 優先使用類,必要時重構為接口
  • 從類開始,當接口必要性明確時再重構
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved