The Push Members Down refactoring helps clean up the class hierarchy by moving class members to a subclass or a subinterface. The members are then relocated into the direct subclasses/interfaces only.
Example
| Before | After |
|---|---|
// File Class.java public class Class extends SuperClass { public void publicMethod() { ... } } // File SuperClass.java public abstract class SuperClass { public abstract void publicMethod(); public void hiddenMethod() { ... } } |
// File Class.java public class Class extends SuperClass { public void publicMethod() { ... } public void hiddenMethod() { ... } } // File SuperClass.java public abstract class SuperClass { public abstract void publicMethod(); } |
Pushing members down
- In the editor, open the class whose members you need to push down.
- On the main menu or on the context menu, choose . Push Members Down dialog box displays the list of members to be pushed down.
- In the Members to be pushed down area, select the members you want to move.
Note that the member at caret is already selected.
If pushing a member might cause problems, you will be notified with red highlighting. It means that, if the situation is unattended, an error will emerge after refactoring. IntelliJ IDEA prompts you with a Problems Detected dialog, where you can opt to ignore or fix the problem.
-
Select the
Keep abstract
check box to:
- Convert the original method to abstract, and move the original method body to the new method in subclass as an abstract method implementation, if the original method is non-abstract.
- Create the new abstract method in a subclass and the same abstract method in subclass/subinterface (with possible errors if the subclass is not abstract), if the pushed down methods are already abstract.
- When you push down abstract methods that have JavaDoc comments, specify to how treat them in the JavaDoc section.
- Preview and apply changes.