Java 为什么接口扩展接口

2022-08-31 20:51:07

我想知道我们什么情况下从接口扩展接口?因为,例如

interface A{
    public void method1();
}
interface B extends A{
    public void method2();
}
class C implements B{
    @Override public void method1(){}
    @Override public void method2(){}
}

它不等同于

interface A{
    public void method1();
}
interface B{
    public void method2();     
}
class C implements A, B{
    @Override public void method1(){}
    @Override public void method2(){}
}

背后有什么重要原因吗?


答案 1

重要原因完全取决于接口应该做什么。

如果你有一个接口车辆和一个接口可驾驶,那么所有车辆都是可驾驶的。如果没有接口继承,每种不同类型的汽车类都需要

class ChevyVolt implements Vehicle, Drivable
class FordEscort implements Vehicle, Drivable
class ToyotaPrius implements Vehicle, Drivable

等等。

就像我说的,所有车辆都是可驾驶的,所以更容易拥有:

class ChevyVolt implements Vehicle
class FordEscort implements Vehicle
class ToyotaPrius implements Vehicle

车辆如下:

interface Vehicle extends Drivable

而不必考虑它。


答案 2

是的,有:这就像其他地方的继承一样。如果BA的特化,那么它应该这样写。第二个表示该类恰好实现了 2 个接口,它们之间没有关系。

从最终结果的角度来看,你可以只使用多个接口来代替处理层次结构(就像你可以避免在类层次结构中使用继承的行为一样)。然而,这将使信息更加分散,并且(如果不是更多的话)显着混淆了软件模型的意图。


推荐