标题是不言自明的:如果我有一个实现某个接口的类,该接口是否在继承的类中自动实现?
注意:之前已经提出过这个问题,但有关Visual Basic的问题。如果它重复,我道歉,但我无法在任何地方找到答案。
答案 0 :(得分:2)
未标记为private
的所有内容都由子类继承,因此,为接口实现的类成员将被继承。由于接口成员不能是私有的(出于显而易见的原因),基类实现的所有内容都必须由子类继承。
接口只是一个合同,说"这种类型将使用相同的签名实现这些成员"。
答案 1 :(得分:2)
是的,至少在Java中,接口实现从超类传播到子类。
在一般意义上,类继承和接口实现都表示“is-a”关系:
interface Vehicle { /* ... */ }
class Car implements Vehicle { /* ... */ }
class ElectricCar extends Car { /* ... */ }
// This works because ElectricCar is a Car, which is a Vehicle.
Vehicle vehicle = new ElectricCar();
实际上,作为接口实现一部分的方法必须是public
,因此接口的任何可实例化实现者(例如上面的ElectricCar)都会暴露所有方法接口所要求的,通过从其超类继承或通过其自身必然的公共覆盖。
请注意,没有任何内容会“自动实施”:如果Car标记为abstract
,则可能缺少一个或多个Vehicle方法的实现,就好像Car已经将未实现的Vehicle方法标记为abstract
。在任何情况下,子类ElectricCar都将被视为(并且必须是)Vehicle的实现者,但是如果Car没有提供Vehicle方法的实现,那么ElectricCar将不会编译,直到它提供它自己的。