CodeArts IDE
CodeArts IDE
- 最新动态
- 产品介绍
- 快速入门
-
用户指南
- 下载CodeArts IDE客户端
- 登录CodeArts IDE客户端
- 激活CodeArts IDE客户端
- 配置CodeArts IDE用户权限
- CodeArts IDE产品功能介绍
- CodeArts IDE基础操作介绍
- 使用CodeArts IDE for C/C++
- 使用CodeArts IDE for Java
- 使用CodeArts IDE for Python
- 使用CodeArts IDE for RemoteShell
- 最佳实践
- 常见问题
- API参考
- 文档下载
- 通用参考
链接复制成功!
用委托替换继承
通过这种重构,您可以从继承层次结构中删除类,同时保留父类的功能。在重构过程中,会创建一个私有内部类来继承以前的超类或接口。通过新创建的内部类调用父类的选定方法。
执行重构
- 在代码编辑器中,选择要重构的类,并将光标放置在要从其继承层次结构中删除继承的类中。
- 在编辑器上下文菜单中,选择“重构 > 用委托替换继承”。
- 在打开的“用委托替换继承”对话框中,选择类,从中的继承将通过内部类替换为委托。提供重构选项:
- 在“字段名称”字段中,指定新创建的内部类的字段名称。
- 在“内部类名称”字段中,指定新创建的内部类的名称。
- 选中为“委托组件生成Getter方法”复选框,为新创建的内部类创建getter方法。
- 在“委托成员”选项中,选择要通过新创建的内部类委托的父类的成员。
- 单击“重构”以应用重构。
示例
例如,从AbstractClass中删除InnerClass的继承。因此,将创建一个新的内部MyAbstractClass类,并通过MyAbstractClass调用print和evaluate方法。
重构前
class InheritanceDelegation {
public static void main(String[] args) {
InnerClass innerClass = new InnerClass();
print(innerClass);
}
private static void print(InnerClass innerClass) {
innerClass.print();
}
private static class InnerClass extends AbstractClass {
public void evaluate() {
}
}
private abstract static class AbstractClass {
public void print() {
System.out.println("Hello World!");
}
public abstract void evaluate();
}
}
重构后
class InheritanceDelegation {
public static void main(String[] args) {
InnerClass innerClass = new InnerClass();
print(innerClass);
}
private static void print(InnerClass innerClass) {
innerClass.print();
}
private static class InnerClass {
private final MyAbstractClass abstractClass = new MyAbstractClass();
public AbstractClass getAbstractClass() {
return abstractClass;
}
public void print() {
abstractClass.print();
}
public void evaluate() {
abstractClass.evaluate();
}
private class MyAbstractClass extends AbstractClass {
public void evaluate() {
}
}
}
private abstract static class AbstractClass {
public void print() {
System.out.println("Hello World!");
}
public abstract void evaluate();
}
}
父主题: Java代码重构