标题是不言自明的:如果我有一个实现某个接口(interface)的类,该接口(interface)是否会在继承的类中自动实现?
注意:这个问题以前曾被问过,但涉及 Visual Basic。如果重复,我深表歉意,但我根本无法在任何地方找到答案。
最佳答案
是的,至少在 Java 中,接口(interface)实现从父类(super class)传播到子类。
一般意义上,类继承和接口(interface)实现都表示“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();
实际上,作为接口(interface)实现一部分的方法必须是public
,因此接口(interface)的任何可实例化实现者(例如上面的 ElectricCar)都将公开所有接口(interface)所需的方法,可以通过从其父类(super class)继承,也可以通过其自己的公共(public)重写。
请注意,没有什么是“自动实现的”:如果 Car 被标记为抽象,它可能会缺少一个或多个 Vehicle 方法的实现,就好像 Car 本身将未实现的 Vehicle 方法标记为 摘要
。在任何情况下,子类 ElectricCar 都将被视为(并且必须是)Vehicle 的实现者,但因此,如果 Car 不提供 Vehicle 方法的实现,那么 ElectricCar 将不会编译,直到它提供自己的方法。
关于c# - 接口(interface)会在子类中自动实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23461769/