没有抽象方法的抽象类

本文关键字:抽象类 抽象方法 | 更新日期: 2023-09-27 18:35:51

参照C#,可以定义不包含抽象方法的抽象类,那么将类定义为ABSTRACT有什么用呢?

没有抽象方法的抽象类

具有

属性的abstract类可用于表示继承中的基类。抽象类不能实例化。这可能很合适,因为我们不想让其他人为我们的基类创建对象。

您可以定义抽象

类来定义对象的抽象性质。例如:动物有眼睛。狗可以从动物那里继承,这样它就会有眼睛。我们可以创建一个 Dog 对象。但我们不想创建 Animal 对象。

来自 MSDN,

抽象类的目的是提供 多个派生类可以共享的基类。例如,一个 类库可以定义用作参数的抽象类 它的许多功能,并要求程序员使用该库 通过创建派生的类来提供自己的类实现 .class。

基本上,我使用的经验法则是,当必须继承类才能实例化时,您应该始终定义抽象类。因为抽象类本身不能。

例如。假设你有一个抽象的 Building 类。然后,必须通过派生类(例如银行或房屋)实例化它。Building 类中没有抽象方法的事实与它是否抽象无关。

通过引用 C#,可以定义不包含抽象方法的抽象类

是的,绝对

那么将类定义为抽象有什么用呢?

主要是为了传达应该派生类的事实。通过保护构造函数可以实现类似的效果:没有人能够在不继承类的情况下创建类的实例。

类定义为抽象可以防止它被直接实例化。

一个简单的

规则是,只要你觉得这个特定的类如果独立存在就没有意义时,就制作抽象类(无论它是否包含抽象方法)......

因此在以下情况下使用抽象类

  • 你不允许实例化抽象类的对象,因为它对于这个目的来说太笼统了
  • 但同时允许您给出一些具体的实现可以被其他类继承的方法,这是富有成效的对于您设计的层次结构
  1. 不能创建抽象类的实例。
  2. 抽象关键字使您能够创建不完整的类和类成员,并且必须在派生中实现 .class。
  3. 抽象类的目的是提供多个派生类可以共享的基类的通用定义。

抽象类可以包含抽象方法,也可以包含普通方法(具体方法)。

抽象类的目的是用作可由其他类继承的基类。这样做的好处是多个子类可以利用基类(抽象类)内的方法,而无需再次重写相同的方法。

定义类abstract保留定义抽象成员的可能性。

确实,您可以避免这样做,但在这种情况下,它的意义就更少了。

其他类似的问题可以做:

为什么我可以定义一些函数virtual,即使没有人会覆盖 它。?

当然,这些是不同的概念,但提出问题的想法是相同的。

希望这有帮助。

您可以将一个类定义为抽象的,并且其中没有方法...但是,您将无法对它执行任何操作,因为它只能由其他类继承,而不能自行实例化。