Class Abstract class and Interface method precedence
suggest changeImplementations in classes, including abstract declarations, take precedence over all interface defaults.
- Abstract class method takes precedence over Interface Default Method.
public interface Swim { default void backStroke() { System.out.println("Swim.backStroke"); } } public abstract class AbstractSwimmer implements Swim { public void backStroke() { System.out.println("AbstractSwimmer.backStroke"); } } public class FooSwimmer extends AbstractSwimmer { }
The following statement
new FooSwimmer().backStroke();
Will produce
AbstractSwimmer.backStroke
- Class method takes precedence over Interface Default Method
public interface Swim { default void backStroke() { System.out.println("Swim.backStroke"); } } public abstract class AbstractSwimmer implements Swim { } public class FooSwimmer extends AbstractSwimmer { public void backStroke() { System.out.println("FooSwimmer.backStroke"); } }
The following statement
new FooSwimmer().backStroke();
Will produce
FooSwimmer.backStroke
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents