次の状況があるとします。
public abstract class Vehicle {
public void turnOn() { ... }
}
public interface Flier {
public void fly();
}
Flier
実装するクラスも拡張する必要があることを保証できる方法はありVehicle
ますか? Flier
同様の方法で他のいくつかのインターフェイスを混在させたいので、抽象クラスを作成したくありません。
例えば:
// I also want to guarantee any class that implements Car must also implement Vehicle
public interface Car {
public void honk();
}
// I want the compiler to either give me an error saying
// MySpecialMachine must extend Vehicle, or implicitly make
// it a subclass of Vehicle. Either way, I want it to be
// impossible to implement Car or Flier without also being
// a subclass of Vehicle.
public class MySpecialMachine implements Car, Flier {
public void honk() { ... }
public void fly() { ... }
}