IntelliJ IDEA 14.0.0 Web Help

Push Members Down

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(); }

To push members down

  1. In the editor open a class, whose members you need to push down.
  2. On the main menu, or on the context menu of the editor tab, choose Refactor | Push Members Down . Push Members Down dialog box displays the list of members to be pushed down.
  3. 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.

  4. 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.
  5. When you push down abstract methods that have JavaDoc comments, specify to how treat them in the JavaDoc section.
  6. Preview and apply changes.

See Also

Last modified: 12 November 2014
comments powered by Disqus