提取超类重构有两个选项:
⒈ 根据现有的类创建一个超类。
⒉ 重命名原始类,以便它成为新创建的超类的实现。在这种情况下,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 建议将该类的实例替换为新的超类的实例。如果一个类实例引用一个未在超类中定义的成员,将不会被建议替换。