以前问过一个关于ABC三个类的继承的问题
我的新问题是,如果 A 类是接口,是否可以这样做?
interface A {
...
}
class B: A {
...
}
class C: A {
...
}
这里没有区别。您仍然无法将C
对象分配到List<B>
.
var listA = new List<A>();
var listB = new List<B>();
foreach(A item in listA)
listB.add(item);
如果 . 中有任何C
实例,将抛出异常listA
。
但另一个问题的解决方案仍然有效:
var listA = new List<A>();
var listB = new List<B>();
foreach(B item in listA.OfType<B>())
listB.add(item);
当您从 an 继承时Interface
,它不称为继承,而是称为实现。接口的作用是提醒你在代码中必须实现哪些方法。
创建类时可以添加任意多个接口,但仅限于从 1 个类继承。