抽象类没有抽象方法

时间:2012-05-31 18:44:44

标签: c# abstract-class

通过引用C#,可以定义不包含抽象方法的抽象类,然后将定义类用作ABSTRACT吗?

9 个答案:

答案 0 :(得分:2)

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

您可以定义抽象类来定义对象的抽象性质。例如:动物有眼睛。狗可以从动物遗传,因此它会有眼睛。我们可以创建一个Dog对象。但是我们不想创建一个Animal对象。

来自msdn

  

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

答案 1 :(得分:1)

  

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

是的,绝对

  

那么使用定义类作为摘要?

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

基本上,我根据经验使用,当它们必须被继承以实例化时,你应该总是定义类abstract。因为抽象类本身不能。

例如。假设你有一个Building类,它是抽象的。然后必须通过派生类(例如,银行或众议院)对其进行实例化。在Building类中没有抽象方法的事实与它是抽象的没有任何关系。

答案 4 :(得分:1)

一个简单的规则就是使抽象类(无论它是否包含抽象方法)每当你觉得这个特定的类如果它独立时就不会产生感觉......

因此在

时使用抽象类
  • 你不允许抽象类对象的实例化,因为它对于那个目的来说太笼统了
  • 但同时允许您给出一些具体的实现 可以由其他类继承的方法,这些方法很有成效 对于您设计的层次结构

答案 5 :(得分:0)

你可以将一个类定义为抽象并且没有方法...但是,你将无法对它做任何事情,因为它只能由其他类继承而不能自己实例化。

答案 6 :(得分:0)

  
      
  1. 您无法创建抽象类的实例。
  2.   
  3. abstract关键字使您能够创建不完整且必须在派生中实现的类和类成员   类。
  4.   
  5. 抽象类的目的是提供多个派生类可以共享的基类的通用定义。
  6.   

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

您定义了一个类abstract,以保留定义抽象成员的可能性。

你可以避免这样做,但在这种情况下,它只是意味着更少。

这样的其他问题可以做到:

  

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

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

希望这有帮助。