c# - 什么时候使用抽象类?

标签 c# .net abstract-class

这是关于 abstract classes 的 MSDN 文章,但我真的不明白...

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

最佳答案

当您出于继承和多态性的目的需要一个类时,抽象类很有用,但是实例化类本身是没有意义的,只有它的子类。当你想为一组共享一些公共(public)实现代码的子类定义一个模板,但你又想保证不能创建父类(super class)的对象时,通常使用它们。

例如,假设您需要创建狗、猫、仓鼠和鱼对象。它们具有相似的属性,例如颜色、大小、腿的数量以及行为,因此您可以创建一个 Animal 父类(super class)。但是,动物是什么颜色的? Animal 对象有几条腿?在这种情况下,实例化 Animal 类型的对象没有多大意义,而只是实例化其子类。

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

关于c# - 什么时候使用抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2570814/

相关文章:

c# - WPF MVVM 异步事件调用

c# - ObjectDataProvider 可以与派生类一起使用吗?

c# - System.Timer 在单独的线程中流逝并保持线程限制

.net - WinDbg/SOS : How to correlate managed threads from ! 带有 System.Threading.Thread 实例的线程命令

java重写抽象方法的正确性

c# - 存储对对象的引用

.net - C# PrintDocument PaperSize/FontSize

python - 从抽象类继承SQLAlchemy类时抛出异常: metaclass conflict: the metaclass of a derived class must be

java - JMenuBar抽象按钮工厂不添加按钮

c# - 如何根据 DateTime 类型的生日计算某人的年龄?