c# – 何时使用抽象类?

这里是MSDN文章abstract classes,但我真的不能得到它…

我什么时候应该真正使用抽象类?使用抽象类有什么优点?

当你需要一个类来继承和多态时,抽象类是有用的,但是实例化类本身,只有它的子类是没有意义的。当您想为一组共享一些常见实现代码的子类定义模板时,但是您也希望保证无法创建超类的对象时,通常使用它们。

例如,假设您需要创建Dog,Cat,Hamster和Fish对象。他们拥有类似的属性,如颜色,大小和腿数以及行为,所以你创建一个动物超类。然而,什么颜色是动物?一个动物对象有多少腿?在这种情况下,实例化一个Animal类型的对象并不意味着只是它的子类。

抽象类还具有多态性的额外好处 – 允许您使用(抽象)超类的类型作为方法参数或返回类型。例如,如果你有一个带有train()方法的PetOwner类,你可以将其定义为接受一个Animal类型的对象。 train(Animal a),而不是为Animal的每个子类型创建一个方法。

http://stackoverflow.com/questions/2570814/when-to-use-abstract-classes

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 何时使用抽象类?