在抽象類中實現介面
interface 中定義的方法預設為 public abstract。當 abstract class 實現了 interface 時,interface 中定義的任何方法都不必由 abstract class 實現。這是因為宣告為 abstract 的 class 可以包含抽象方法宣告。因此,第一個具體子類的責任是實現從任何介面和/或 abstract class 繼承的任何 abstract 方法。
public interface NoiseMaker {
void makeNoise();
}
public abstract class Animal implements NoiseMaker {
//Does not need to declare or implement makeNoise()
public abstract void eat();
}
//Because Dog is concrete, it must define both makeNoise() and eat()
public class Dog extends Animal {
@Override
public void makeNoise() {
System.out.println("Borf borf");
}
@Override
public void eat() {
System.out.println("Dog eats some kibble.");
}
}
從 Java 8 開始,interface 可以宣告方法的 default 實現,這意味著該方法不會是 abstract,因此任何具體的子類都不會被強制實現該方法,但會繼承 default 實現,除非被覆蓋。