没有抽象方法的抽象类
本文关键字:抽象类 抽象方法 | 更新日期: 2023-09-27 18:35:51
参照C#,可以定义不包含抽象方法的抽象类,那么将类定义为ABSTRACT有什么用呢?
属性的abstract
类可用于表示继承中的基类。抽象类不能实例化。这可能很合适,因为我们不想让其他人为我们的基类创建对象。
类来定义对象的抽象性质。例如:动物有眼睛。狗可以从动物那里继承,这样它就会有眼睛。我们可以创建一个 Dog 对象。但我们不想创建 Animal 对象。
来自 MSDN,
抽象类的目的是提供 多个派生类可以共享的基类。例如,一个 类库可以定义用作参数的抽象类 它的许多功能,并要求程序员使用该库 通过创建派生的类来提供自己的类实现 .class。
基本上,我使用的经验法则是,当必须继承类才能实例化时,您应该始终定义抽象类。因为抽象类本身不能。
例如。假设你有一个抽象的 Building 类。然后,必须通过派生类(例如银行或房屋)实例化它。Building 类中没有抽象方法的事实与它是否抽象无关。
通过引用 C#,可以定义不包含抽象方法的抽象类
是的,绝对
那么将类定义为抽象有什么用呢?
主要是为了传达应该派生类的事实。通过保护构造函数可以实现类似的效果:没有人能够在不继承类的情况下创建类的实例。
类定义为抽象可以防止它被直接实例化。
规则是,只要你觉得这个特定的类如果独立存在就没有意义时,就制作抽象类(无论它是否包含抽象方法)......
因此在以下情况下使用抽象类
- 你不允许实例化抽象类的对象,因为它对于这个目的来说太笼统了
- 但同时允许您给出一些具体的实现可以被其他类继承的方法,这是富有成效的对于您设计的层次结构
- 不能创建抽象类的实例。
- 抽象关键字使您能够创建不完整的类和类成员,并且必须在派生中实现 .class。
- 抽象类的目的是提供多个派生类可以共享的基类的通用定义。
抽象类可以包含抽象方法,也可以包含普通方法(具体方法)。
抽象类的目的是用作可由其他类继承的基类。这样做的好处是多个子类可以利用基类(抽象类)内的方法,而无需再次重写相同的方法。
定义类abstract
以保留定义抽象成员的可能性。
确实,您可以避免这样做,但在这种情况下,它的意义就更少了。
其他类似的问题可以做:
为什么我可以定义一些函数
virtual
,即使没有人会覆盖 它。?
当然,这些是不同的概念,但提出问题的想法是相同的。
希望这有帮助。
您可以将一个类定义为抽象的,并且其中没有方法...但是,您将无法对它执行任何操作,因为它只能由其他类继承,而不能自行实例化。