public abstract class Animal:CollectionBase
{
public void Add(Animal newAnimal)
{
List.Add(newAnimal);
}
}
以上代码中,教程中说List是CollectionBase的一个受保护属性,类型为Ilist
既然是属性,为什么后面可以跟点号再加方法名呢?
另外,Add()方法是接口Ilist提供的,那么实现该方法的CollectionBase为什么没有实现它(看了CollectionBase的元数据,没有找到实现方法),是不是因为CollectionBase是抽象类,那其派生的类Animals也没有实现该方法,因为我在Ilist的元数据中看了Add()方法的返回类型是int,上面代码中也没有实现该方法的代码啊。
类,派生类,接口,实现,真的是很搞啊,哪位大神可以指点一下。
------解决思路----------------------
CollectionBase有实现了所有接口的方法。只不过这些方法都private类型的,所以你按f12看不到。f12你可以看到public或protected类型的,因为它们需要被外部或子类访问;而内部的private方法根本不需要公开,因为不需要使用到。
这个时候你应该去看源代码。