在抽象類中實現介面
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
實現,除非被覆蓋。