1.(P148).C#不支持多重继承,但通过接口实现多重继承。
接口可由属性,方法,事件和索引器这4种成员类型的任何组合构成,但不能包含字段。
接口不能直接实例化。
继承接口的任何非抽象类型都必须实现接口的所有成员。
接口不包含方法的实现。
接口中的成员必须是公共的。
2.当类实现两个接口,且两个接口有相同签名的成员时,则要用显式接口成员实现。显式接口成员实现是使用接口名称和一个句点命名该类成员来实现的。显式接口成员属于接口的成员,不是类的成员。因此,不能用类对象直接访问,必须通过接口对象访问。
3.抽象类与抽象方法:
抽象类不能直接实例化。
抽象类可以包含抽象成员,但非抽象类不可以。
抽象类不能被密封。
抽象方法不提供任何实现,因此它的方法体只包含一个分号。因此派生一个非抽象类时,需要用override重写抽象方法。
4.抽象类和接口都不能直接实例化,但可以声明他们的变量。如果这样做,就可以使用多态性把继承这两种类型的对象指定给它们的变量。接着通过这些变量来使用这些类型的成员,但不能直接访问派生类中的其他成员。
5.密封类和密封方法用来限制继承。
密封类不能作为基类被继承,但它可以继承别的类或接口。
密封类中不能声明受保护成员或虚成员。
密封类不能声明为抽象的,即sealed不能与abstract连用。
密封方法只能用于对基类的虚方法进行具体的实现,因此sealed总是与override连用。