【发布时间】:2013-02-15 11:35:43
【问题描述】:
我一直在阅读一些与多继承和接口相关的代码理论。它在所有地方都说interface is a class without implementation。
1) 没有在接口中实现方法/功能有什么用?是不是支持同一个方法在继承一个接口的不同类中多次实现?
2) 那里的大多数代码示例似乎都显示了void 接口方法。接口函数/方法总是void吗?
【问题讨论】:
-
您应该在发布问题之前尝试搜索一下:here
-
(1) 差不多,是的。 (2) 不一定;你可以有非 void 方法、属性、事件...
-
可能有点背景:C#没有像c那样的多重继承。在 C 中,您可能有一个带有一些方法的基类,基类的 2 个(或更多)子类,然后是从两个子类继承的“大”子类。这通常被称为“钻石问题”。孙子是否应该表现得像其中一个孩子,哪一个? java 和 c# 尝试使用“抽象”类(即接口)来避免来自这个星座的问题。您可以实现一些接口,但不能从多个类继承。
-
@Offler,我在 SO on MI 进行了一次精彩的对话 :) 感谢您的意见。作为对您评论后一部分的总结,我可以这样说
Class D: A, IB, IC吗? (IB、IC是两个不同的接口,所以这个D类继承自A类和两个接口/抽象类) -
如果您执行“D 类:A、IB、IC”之类的操作,则您从 A 类继承。如果 A 具有非抽象公共方法,您可以调用它们。对于 IB,您只说:D 包含在 IB 中声明但在 IB 中没有代码的方法的实现。 D 实现了充当 IB 所必需的代码。或者换句话说:你真正继承自 A,它声明并定义了可以使用的方法; IB 仅显示需要哪种结构,如果您在类中实现接口,则需要具有此名称的东西。
标签: c# interface implementation