# 将继承替换为委托

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

> **TL;DR**
> `重构 | 用委托取代继承`

用委托替换继承  重构让您在保留父类功能的同时，从继承层次结构中移除一个类。 IntelliJ IDEA 创建一个继承了前一个超类或接口的私有内部类。 通过新的内部类调用父类的选定方法。

Procedure:

1. 选择您要重构的类。

2. 从主菜单或上下文菜单中选择  `重构 | 用委托取代继承` 。

3. 在打开的 [对话框](#replace_inheritance_dialog)中，指定父对象和内部类定义的名称。 另外，请选择父类中将通过内部类委托的成员，以及 getter 选项。

4. [预览](refactoring-source-code.html#changes_preview)并应用更改。

## 示例

|  之前  |  之后  |
| --- | --- |
|     ```JAVA // File Class.java public class Class extends SuperClass {     public int varInt;     public void openMethod() {         ...     } }  // File SuperClass.java public abstract class SuperClass {     public static final int CONSTANT=0;     public abstract void openMethod();     public void secretMethod() {         ...     } }  ```    |     ```JAVA // File Class.java public class Class {     public int varInt;     private final MySuperClass superClass = new MySuperClass();     public SuperClass getSuperClass() {         return superClass;     }     public void openMethod() {         superClass.openMethod();     }     private class MySuperClass extends SuperClass {         public void openMethod() {             ...         }     } }  // File SuperClass.java UNCHANGED public abstract class SuperClass {     public static final int CONSTANT=0;     public abstract void openMethod();     public void secretMethod() {         ...     } }  ```    |

## 将继承替换为委托对话框

请使用此对话框指定   用委托替换继承   重构的选项。

|  条目  |  描述  |
| --- | --- |
|  替换委派继承从  |  在此处选择父对象，其继承将被替换。  |
|  字段名称  |  请为新内部类的字段指定名称。  |
|  内部类名  |  在此字段中指定内部类定义的名称。  |
|  委派成员  |  在此区域中，选择父类的成员，这些成员将通过内部类进行委托。  |
|  为委派成员生成getter  |  选中此选项以为内部类创建 getter 方法。  |

## See also

### 操作指南

[代码重构](refactoring-source-code.html)

