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

JBuilder 2005 重構實戰:類繼承體系中的方法與欄位搬遷(Push Down / Pull Up)

     編輯:Java 程式設計入門

前言

JBuilder 2005 提供強大的重構工具,能在類繼承階層中靈活搬遷方法與欄位(欄位/屬性)。本文以「動物」繼承體系為例,示範 Push Down(下移) 與 Pull Up(上推) 的實際操作流程與關鍵細節。

範例類別結構

  • Animal(父類別):含 weight、volume 兩欄位,與 howl() 方法。
  • Cat、Horse(子類別)繼承 Animal。

類別繼承圖

1. 方法搬遷

Push Down Method(下移方法)

  1. 開啟 Animal.java,游標置於 howl() 方法。
  2. Ctrl+Shift+R → Push Down Method。
  3. 對話框中:
    • Method:選擇欲下移的方法。
    • Keep as abstract in current class:勾選則將父類別轉為 abstract,保留方法宣告。
    • Selected subclasses:預設全選,可取消勾選(例:僅下移至 Horse)。

關鍵行為: 若方法引用父類別 private 欄位(如 volume),下移後該欄位會自動提升為 protected 以供子類別存取。

下移方法對話框

Pull Up Method(上推方法)

  1. 開啟子類別(如 Horse.java),游標置於已下移的 howl()。
  2. Ctrl+Shift+R → Pull Up Method。
  3. 若方法依賴其他成員,會列於 Select dependent members to move,建議一併上推。

上推方法對話框

設計原則: 發現子類別共享相同邏輯時,上推至父類別可提升複用性、減少重複。

2. 欄位搬遷

Push Down Field(下移欄位)

  1. 游標置於 Animal 的 volume 欄位。
  2. Ctrl+Shift+R → Push Down Field。
  3. 對話框:
    • Select subclasses:勾選目標子類別(例:僅 Cat)。
    • Select dependent members to move:JBuilder 會分析賦值關聯(如 volume = weight),列出關聯欄位供選擇是否一併下移。

下移欄位對話框

Pull Up Field(上推欄位)

  1. 在子類別(Horse)游標置於 volume。
  2. Ctrl+Shift+R → Pull Up Field。

上推欄位對話框

⚠️ 重要限制提醒

上推欄位不會自動分析關聯欄位。 若欄位初始化運算式引用其他欄位(如 volume = weight),上推後可能在父類別找不到 weight 導致編譯錯誤,需手動修正。

總結

  • 方法上推/下移:支援依賴分析,較完整。
  • 欄位下移:支援關聯欄位一併移動。
  • 欄位上推:僅移動宣告行,不處理關聯,需人工檢查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved