阅读(4272) (18)

IntelliJ IDEA提取超类

2017-11-06 10:21:40 更新

提取超类重构有两个选项:

  • 根据现有的类创建一个超类。
  • 重命名原始类,以便它成为新创建的超类的实现。在这种情况下,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;

提取超类

  1. 在其中一个视图中选择所需的类,或者只是在编辑器中打开它。
  2. 在主菜单或上下文菜单上,选择:重构| 提取| 超类(Refactor | Extract | Superclass)。
  3. 在提取超类对话框中:
    • 要创建一个新的超类,请选择 "提取超类" 选项并指定新超类的名称。

      要重命名原始类并使其成为新创建的超类的实现,请选择 "重命名原始类",并在可能的情况下使用超类, 并指定原始类的新名称。IntelliJ IDEA 会将所有原始的类用法改为实现类的用法,只有在它仍然是必要的时候。

    • 指定新的超类所在的包。
    • 在 "组成超类的成员" 区域中,选择要移动或委派给超类的类成员。

      若要在当前类中保留方法实现,并在提取的超类别中声明它为抽象,请选中 "使抽象" 复选框。

    • 在 JavaDoc 区域,选择要应用于 JavaDoc 的操作。
      • 若要将其保留在其所在的位置,请选择 "As" 选项。
      • 要将其复制到提取的超类,请选择 "复制" 选项。
      • 要将其移动到提取的超类,请选择 "移动" 选项。
  4. 单击 "重构" 以继续。

    如果该类在当前项目中使用,则 IntelliJ IDEA 建议将该类的实例替换为新的超类的实例。如果一个类实例引用一个未在超类​​中定义的成员,将不会被建议替换。