2012-06-27 91 views

回答

11

不,你並不需要在抽象類的抽象方法。

的限制有:

  • 如果一個類有一個抽象方法,屬性,索引或事件那麼類也必須是抽象的。
  • 你不能實例化一個抽象類。

沒有要求,即抽象類必須具有抽象方法。

+0

非常感謝你向我解釋清楚:)我欣賞它,歡呼... – Learner

2

你不需要抽象方法有一個抽象類。有時候限制一個類被實例化並將其指定爲某些繼承層次結構的基礎是有用的。所有的方法都可以在抽象類中定義。

+1

謝謝...... :) – Learner

5

不,這是完全有效的。事實上,每一個static類在C#實際上是在.NET中抽象和密封類。 (您不能聲明一個抽象類與C#源代碼,雖然密封。)

的C#4規範明確要求這一點,在第10.1.1.1(抽象類):

抽象類允許(但不是必需)包含抽象成員。

這當然罕見有沒有抽象成員的抽象類,但它不是聞所未聞的。 (不要忘了,它不只是方法,可以是抽象的 - 你可以有抽象的事件和屬性,太)

+0

我從來沒有嘗試抽象密封類;)但我可以問你爲什麼他們防止這種情況? (我沒有問它作爲新的Q,因爲我沒有在它周圍搜索,如果短的提示或鏈接可能對你)。 –

+0

非常感謝你,完美:) – Learner

+0

@SaeedAmiri:我認爲抽象類的全部目的是它應該作爲其他子類的基類.... Jon給出了一個很好的理由?請糾正我,如果不是.....謝謝你....我是新的和興奮的學習:) – Learner

5

MSDN - abstract(強調):

抽象類可以包含抽象方法和訪問器。

您的抽象類只能包含非抽象方法,或者可能是空類,如果您需要的話。它爲您提供了一個無法實例化的基類,這對於多態性可能很有用。