2012-02-03 29 views

回答

14

抽象類通常有一個或多個抽象方法。所以是的,它可以實施一些方法。目標是強制用戶實現這些方法以使對象有效。有時抽象類用於提供某些接口的「基本」實現,使最終用戶只指定關鍵方法。你也可以有一個沒有任何抽象方法的抽象類:在這種情況下,你斷言你必須從那個類派生才能使用它。

+5

有可能創建抽象類沒有抽象方法,只需將類標記爲抽象類... – 2012-02-03 09:48:17

+2

抽象類意味着它必須被繼承以實例化。 Kirill Polishchuk指出,這並不意味着它應該有抽象的方法。 – ken2k 2012-02-03 09:51:51

+0

@KirillPolishchuk謝謝磷蝦,我從來沒有注意到,我糾正了答案。 – 2012-02-03 09:53:42

1

是的。 abstract類不能被實例化(你必須實例化一個繼承自抽象類的類),但它可以包含實現。

1

完美地實現一些方法,並讓別人抽象。

如果所有方法都必須是抽象的,那麼您也可以使用它的接口。

0

它很好,允許,abstract class至少有一個成員(方法/財產)沒有實現,所以它不能實例化。

interface也被稱爲pure abstract class這意味着它是100%抽象的,所以不允許你指定任何實現。

請記住,有很多文章和觀點關於永遠不要從另一個具體類從具體類中派生出具體類,而只能從抽象類派生出......至少這是C++到幾年前的趨勢,然後我感動到C#端,開始工作更多,沒有時間繼續閱讀那些漂亮的文章...... :)

+3

你可以在C#中沒有任何抽象成員的抽象類 – 2012-02-03 09:57:20

6

在抽象類中有一些常見的實現。

如果根本沒有實現,請考慮使用接口而不是抽象類。