c# - 接口(interface)会在子类中自动实现吗?

标签 c# java oop inheritance interface

标题是不言自明的:如果我有一个实现某个接口(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/

相关文章:

php - 为什么在类的构造函数中定义 undefined variable 时会出现错误?

c# - 字符串未被识别为有效的日期时间

c# - 在任务中调用失败

java - JFace PopupDialog 中小部件的背景颜色

java - 如何在Web项目中部署persistence.xml?

java - <img> 标签的 src 属性中的请求未处理

java - java中final字段初始化的问题: avoiding duplication of code using multiple constructors

php - 从字符串中删除多余的引号

c# - 如何强制应用程序不以管理员身份运行

c# - Linq 连接、分组、计数(其中计数大于值)