interface默认情况下,在中定义的方法是public abstract。当abstract class实现时interface,interface无需实现中定义的任何方法abstract class。这是因为class被声明的aabstract可以包含抽象方法声明。因此,第一个具体子类的责任是实现abstract从任何接口和/或继承的任何方法abstract class。
public interface NoiseMaker { void makeNoise(); } public abstract class Animal implements NoiseMaker { //不需要声明或实现makeNoise() public abstract void eat(); } //因为Dog是具体的,所以它必须同时定义makeNoise()和eat() public class Dog extends Animal { @Override public void makeNoise() { System.out.println("Borf borf"); } @Override public void eat() { System.out.println("狗吃一些粗磨。"); } }
从Java 8开始,可以interface声明default方法的实现,这意味着该方法将不是abstract,因此任何具体的子类都不会被强制实现该方法,而是会继承default实现,除非被覆盖。