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

JBuilder 2005 類繼承體系重構:上推下移與超類/介面提煉

     編輯:Java 相關知識

在 JBuilder 中,將欄位與方法在類繼承體系中上推或下移操作極其直觀。以下以經典繼承結構為例演示:

圖 15 類的繼承類圖

Animal 為 Cat 與 Horse 的父類,包含兩個欄位與一個方法。可選擇性地將欄位下移至特定子類,或為 Animal 提煉超類與介面。

一、搬遷方法

下移方法

打開 Animal.java,游標定位於 howl() 方法,Ctrl+Shift+R → Push Down Method:

圖 16 下移方法

  • Method:要下移的方法。
  • Keep as abstract in current class:下移同時將當前類設為抽象類。
  • Selected subclasses:列出所有子類,預設下移至全部子類;此處取消 Cat,僅下移至 Horse。

注意:howl() 內引用了 private int volume,下移後該欄位自動變為 protected 以供子類存取。

上推方法

上推與下移互為逆操作。保存並重新編譯後,打開 Horse.java,游標置於 howl(),Ctrl+Shift+R → Pull Up Method:

圖 17 上推方法

若上推方法引用了其他方法,這些被引用方法會列在 Select dependent members to moves 列表,通常需一併上移至父類。面向對象特性在於子類共享父類代碼,發現共享代碼時應及時上推以提升復用性。

二、搬遷欄位

Animal 類包含兩個欄位:

protected int weight ;
protected int volume = weight ;

下移欄位

欲將 volume 下移至 Cat,游標定位於 volume,Ctrl+Shift+R → Push Down Field:

圖 18 下移欄位

  • Field:要下移的欄位。
  • Select subclasses:子類列表,預設全選;此處取消 Horse,僅下移至 Cat。
  • Select dependent members to move:JBuilder 透過賦值語句分析關聯欄位(此處為 weight),預設一併下移。

確定後完成下移。編譯專案,打開 Horse.java 執行反操作:上推欄位至 Animal。

上推欄位

游標定位於 Horse.java 的 volume,Ctrl+Shift+R → Pull Up Field:

圖 19 上推欄位

提示:JBuilder 上推欄位不會像下移那樣列出關聯欄位,僅將聲明行上推。若定義行引用了其他欄位(如 volume = weight),上推後可能產生語法錯誤,需手動修正。

三、提煉超類

當多個類具備相同功能時,可提煉超類。隨需求變更,需關注鳥類 Bird,在 Bird 與 Animal 之上抽象出 Creature 超類:

打開 Animal.java,游標置於類名,Ctrl+Shift+R → Introduce Superclass for "Animal":

圖 20 提煉超類對話框

指定超類名 Creature 及包名,確定後 JBuilder 建立超類並調整繼承關係:

// Creature 超類
package myrefactor ;
public class Creature {
public Creature() { }
}

// Animal 調整為繼承 Creature
package myrefactor ;
public class Animal extends Creature { … }

因 Creature 未編譯,編輯器會報語法錯誤。可透過重構資訊窗口的編譯按鈕 編譯相關類消除錯誤。

四、提煉介面

為動物定義共同習性,可提煉介面。打開 Animal.java,游標置於類名,Ctrl+Shift+R → Extract Interface from Class "Animal":

圖 21 提煉介面對話框

  • Interface name:Habitable
  • Package:接受預設
  • Available methods:列出所有 public 方法,勾選需提煉者

確定後生成介面並使 Animal 實現之:

// Habitable 介面
package myrefactor ;
public interface Habitable {
public void howl() ;
}

// Animal 實現介面
package myrefactor ;
public class Animal extends Creature implements Habitable { … }

若僅提煉單一方法至介面,可直接在方法名上 Ctrl+Shift+R → Extract to Interface Method 完成。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved