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