我正在观看视频(https://www.youtube.com/watch?v=Huj3Jbz-NFw),这是一张照片。
我的问题是:不能在不使用接口的情况下创建AB类这样你把A和B对象放在里面并调用它们?当我说可以忽略界面时,我扔掉了什么信息。
答案 0 :(得分:2)
通过实施IA
和IB
类AB
可以在预期IA
或IB
的任何地方使用:
void doSomethingWithIA(IA item)
{
item.AMethod();
}
...
AB ab = new AB();
doSomethingWithIA(ab);
如果AB
与[{1}}具有相同的方法名称,而IA
IB
则不接受它作为参数。
答案 1 :(得分:0)
是的,AB
类可以包含A
和B
个对象class members
。
图像中的示例有点难以在“真实”示例中进行描绘。
我ususaly遵循规则:
如果它是[类型],则继承。
如果它有[类型],成员。
实施例。
猫 是动物,所以猫继承自动物
猫有尾巴,所以Tail是Cat。
由于C#不允许您从多个类继承,因此必须使用接口。
Cat 是一个动物,但它 是一个Trickster,有两种不同的类型。
所以它实现了IAnimal
和ITrickster
接口!
答案 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