
# 尽可能使用接口
此重构允许将从基类/接口派生的指定方法的执行委托给实现同一接口的父类或内部类的实例。
#### 执行重构
1. 在代码编辑器中，将光标放在应通过父类/接口委托其方法的类的声明上。
2. 单击右键展示上下文菜单，选择**"重构 \> 尽可能使用接口"**。
3. 在打开的**"尽可能使用接口"** 对话框中，选择应替换当前类用法的父类/接口。想要同时替换当前类在**instanceof** 语句中的用法，请选中在**"在instanceof中使用接口/超类"** 复选框。如下图所示：
   
   图1尽可能使用接口   
   ![](https://support.huaweicloud.com/usermanual-codeartside/zh-cn_image_0000002343546510.png)
   CodeArts IDE将自动重命名变量，以匹配重构引入的更改。如有必要，请在**"重命名变量"**对话框中提供替代名称。如下图所示：
   图2重命名变量   
   ![](https://support.huaweicloud.com/usermanual-codeartside/zh-cn_image_0000002377584397.png "点击放大")
   
   
4. 单击**"重构"**以应用重构。
 
#### 示例
例如，将**print** 方法的使用从类**InnerClass** 委托给它实现的接口**InnerInterface**。
**重构前**
"com\\refactoring\\source\\UseInterface.java"文件内容如下：
```
class UseInterface {
    public static void main(String[] args) {
        InnerClass innerClass = new InnerClass();
        print(innerClass);
    }
    private static void print(InnerClass innerClass) {
        innerClass.print();
    }
    private static class InnerClass implements InnerInterface {
        @Override
        public void print() {
            System.out.println("Hello World!");
        }
    }
    private static interface InnerInterface{
        void print();
    }
}
```
**重构后**
"com\\refactoring\\source\\UseInterface.java"文件内容如下：
```
class UseInterface {
    public static void main(String[] args) {
        InnerInterface innerInterface = new InnerClass();
        print(innerInterface);
    }
    private static void print(InnerInterface innerInterface) {
        innerInterface.print();
    }
    private static class InnerClass implements InnerInterface {
        @Override
        public void print() {
            System.out.println("Hello World!");
        }
    }
    private static interface InnerInterface{
        void print();
    }
}
```
