更新时间:2025-08-19 GMT+08:00
分享

提取超类

此重构允许选定现有类的成员创建新的超类。这与内联超类相反。

执行重构

  1. 在代码编辑器中,将光标放置在要将其成员提取到超类中的任何位置。
  2. 单击右键展示上下文菜单,选择重构 > 提取超类...
  3. 在打开的“提取超类”对话框中,提供重构参数。

    • 提供提取的超类名称和包。
    • “形成超类的成员”区域中,选择要提取的类成员。对于方法,选中“设为抽象”复选框,将提取的方法声明为超类中的abstract方法,并将其实现保留在原始类中。
    • “抽象类的JavaDoc”选项中,选择是将JavaDoc注释移动或复制到提取的超类,还是保持原样。

      如下图所示:

      图1 提取超类

  4. 单击“重构”以应用重构。

示例

例如,基于提取ExtractImpl类的print方法和myField字段创建一个新的ExtractAbstract超类。在创建的超类中,print方法将被声明为abstract

重构前

“com\refactoring\source\ExtractImpl.java”文件内容如下:

class ExtractImpl {
   public int myField;

   public static void main(String[] args) {
      new ExtractImpl().print();
   }

   public void print() {
      System.out.println("Hello World!");
   }
}

重构后

“com\refactoring\source\ExtractImpl.java”文件内容如下:

class ExtractImpl extends ExtractAbstract {
   public static void main(String[] args) {
      new ExtractImpl().print();
   }
}

同时,生成一个“com\refactoring\source\ExtractAbstract.java”文件,文件内容如下:

package com.refactoring.source;
public class ExtractAbstract {
    public int myField;
    public void print() {
        System.out.println("Hello World!");
    }
}

相关文档