带接口的多重继承

时间:2014-11-25 21:29:42

标签: c# design-patterns interface multiple-inheritance

我正在观看视频(https://www.youtube.com/watch?v=Huj3Jbz-NFw),这是一张照片。

enter image description here

我的问题是:不能在不使用接口的情况下创建AB类这样你把A和B对象放在里面并调用它们?当我说可以忽略界面时,我扔掉了什么信息。

3 个答案:

答案 0 :(得分:2)

通过实施IAIBAB可以在预期IAIB的任何地方使用:

void doSomethingWithIA(IA item)
{
  item.AMethod();
}

...

AB ab = new AB();
doSomethingWithIA(ab);

如果AB与[{1}}具有相同的方法名称,而IA IB则不接受它作为参数。

答案 1 :(得分:0)

是的,AB可以包含AB个对象class members
图像中的示例有点难以在“真实”示例中进行描绘。

我ususaly遵循规则:
如果它是[类型],则继承。
如果它有[类型],成员。

实施例。
是动物,所以猫继承自动物 猫尾巴,所以Tail是Cat。

的成员

由于C#不允许您从多个类继承,因此必须使用接口。

Cat 是一个动物,但它 是一个Trickster,有两种不同的类型。
所以它实现了IAnimalITrickster接口!

答案 2 :(得分:0)

我认为你的问题是为什么我们甚至需要一个界面。

我能想到的一个原因是减少了类之间的耦合。 在测试驱动开发中,接口可以帮助您更换模拟对象。

检查这些链接以获取更多信息。 Why do we need interfaces in Java? https://social.msdn.microsoft.com/Forums/vstudio/en-US/8edbf675-6375-4735-997e-bd7bce58f115/why-do-we-need-interfaces?forum=csharpgeneral