
# 上/下移成员
**"上移成员"** 重构允许用户将类成员移动到超类或接口。**"下移成员"**重构的作用则相反，允许用户将类成员移动到子类。
#### 执行重构
1. 在代码编辑器中，将光标放置在要向上拉或向下推类层次结构的字段或方法的声明上。
2. 单击右键展示上下文菜单，选择**"重构 \> 上移成员 / 下移成员"** 。
   
   在打开的**"上移成员"** 或**"下移成员"** 对话框中，选择目标类并提供重构选项。
   - 选中要向上（向下）移动的类成员的复选框。
   
   - 对于方法，选中**"设为抽象"**复选框，将被移动的原始方法转换为抽象方法，并将其实现保留在原始类中。
   
   - 在**"JavaDoc"** 选项中，提供JavaDoc注释应与移动的类成员一起移动、复制还是保持原样的选择。
     如下图所示：
     图1上移成员   
     ![](https://support.huaweicloud.com/usermanual-codeartside/zh-cn_image_0000002351629802.png "点击放大") 
   
   
   
   - 单击**"重构"**以应用重构。
    
   
   
 
#### 示例
作为示例，将"InnerClass"中的字段**myField** 和方法**print**移动到超类"AbstractClass"中。
**重构前**
"com\\refactoring\\source\\PullUp.java"文件内容如下：
```
class PullUp {
   public static void main(String[] args) {
      new InnerClass().print();
   }
   private static class InnerClass extends AbstractClass {
      public String myField;
      public void print() {
         System.out.println("Hello World");
      }
   }
   private static abstract class AbstractClass {
   }
}
```
**重构后**
上移成员"myField"和"print"后，"com\\refactoring\\source\\PullUp.java"文件内容如下：
```
class PullUp {
   public static void main(String[] args) {
      new InnerClass().print();
   }
   private static class InnerClass extends AbstractClass {
   }
   private static abstract class AbstractClass {
      public String myField;
      public void print() {
         System.out.println("Hello World");
      }
   }
}
```
