提取超類重構有兩個選項:
⒈ 根據現有的類創建一個超類。
⒉ 重命名原始類,以便它成為新創建的超類的實現。在這種情況下,IntelliJ IDEA 會將所有原始類的用法更改為在可能的情況下使用超類。
原始類中的字段和方法可以移動到超類。同樣,對于一個方法,你只能傳遞方法聲明,而不是在超類中將方法聲明為抽象的實現。因此,您將擁有超類和從超類繼承的原始類。
// File Class.java
public class Class {
public int varInt;
private double varDouble;
public static final int CONSTANT = 0;
public void publicMethod() {
...
}
public void hiddenMethod() {
...
}
public void setVarDouble(double var) {
this.varDouble = var;
}
public double getVarDouble() {
return
varDouble;
}
}
提取超類重構后
// File Class.java
public class Class extends SuperClass {
Int;
blicMethod() {
ddenMethod() {
lass.java
ass SuperClass {
varDouble;
final int CONSTANT = 0;
t void publicMethod();
tVarDouble(double var) {
uble = var;
getVarDouble() {
Double;
提取超類
⒈ 在其中一個視圖中選擇所需的類,或者只是在編輯器中打開它。
⒉ 在主菜單或上下文菜單上,選擇:重構| 提取| 超類(Refactor | Extract | Superclass)。
⒊ 在提取超類對話框中:
(1)要創建一個新的超類,請選擇 "提取超類" 選項并指定新超類的名稱。
要重命名原始類并使其成為新創建的超類的實現,請選擇 "重命名原始類",并在可能的情況下使用超類, 并指定原始類的新名稱。IntelliJ IDEA 會將所有原始的類用法改為實現類的用法,只有在它仍然是必要的時候。
(2)指定新的超類所在的包。
(3)在 "組成超類的成員" 區域中,選擇要移動或委派給超類的類成員。
若要在當前類中保留方法實現,并在提取的超類別中聲明它為抽象,請選中 "使抽象" 復選框。
(4)在 JavaDoc 區域,選擇要應用于 JavaDoc 的操作。
① 若要將其保留在其所在的位置,請選擇 "As" 選項。
② 要將其復制到提取的超類,請選擇 "復制" 選項。
③ 要將其移動到提取的超類,請選擇 "移動" 選項。
⒋ 單擊 "重構" 以繼續。
如果該類在當前項目中使用,則 IntelliJ IDEA 建議將該類的實例替換為新的超類的實例。如果一個類實例引用一個未在超類??中定義的成員,將不會被建議替換。