提取超类
此重构允许选定现有类的成员创建新的超类。这与内联超类相反。
执行重构
- 在代码编辑器中,将光标放置在要将其成员提取到超类中的任何位置。
- 单击右键展示上下文菜单,选择 。
- 在打开的“提取超类”对话框中,提供重构参数。
- 提供提取的超类名称和包。
- 在“形成超类的成员”区域中,选择要提取的类成员。对于方法,选中“设为抽象”复选框,将提取的方法声明为超类中的abstract方法,并将其实现保留在原始类中。
- 在“抽象类的JavaDoc”选项中,选择是将JavaDoc注释移动或复制到提取的超类,还是保持原样。
如下图所示:
图1 提取超类
- 单击“重构”以应用重构。
示例
例如,基于提取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!"); } }