C 之抽象類和抽象方法

2021-09-02 07:23:04 字數 1556 閱讀 8618

抽象類中的方法既可以有抽象方法,也可以有非抽象方法,可以全部都是抽象方法,也可以全部都是非抽象方法

抽象方法只能出現在抽象類或介面中,不能出現在非抽象類中

抽象類和介面不能new物件

抽象類可以繼承抽象類,也可以繼承非抽象類

籠統的,模糊,不具體的類

為什麼說籠統的呢?從上圖可以看出來,圖中有個動物類,那動物類是乙個很廣的範圍, 它只是乙個概念,我們很難把動物這個類很具體的表現出來。所以它是一種籠統的,模糊,不具體的類。

我們可以把抽象類看作是類的集合,把類看成是物件的集合,這樣一類我們對抽象類的理解就清晰多了。

那抽象類有什麼樣的特點呢?

方法只有宣告沒有實現,需要被abstract關鍵字修飾,抽象方法必須定義在抽象類中,該類也必須被abstract關鍵字修飾

抽象類不可以被例項化,因為呼叫抽象方法沒意義

抽象類必須有其子類覆蓋了所有的抽象方法後,才可以被例項化,否則這個子類還是是個抽象類

1.抽象方法只能定義在抽象類中,抽象的方法和抽象的類必須由關鍵字abstract修飾。

2.抽象類值只定義方法宣告,不定義功能主題(即方法的實現)。

3.抽象類不可以被建立物件。

抽象類就是乙個不存在的東西,人們無法定義它,

抽象方法和抽象類又absctract修飾

a、抽象類只能用作其他類的基類,不能建立抽象類物件例項。

b、抽象類不能用作引數型別、函式返回型別、或顯示轉換的型別,

但可以宣告指向抽象類的指標變數、此指標可以指 向它的派生類,進而實現多型性

c、如果在抽象類的派生類中沒有重新說明純虛函式,則該函式在派生類中

仍然為純虛函式,而這個派生類仍然還是乙個抽象類。

//動物類**

//動物類**

public abstract class animal

set

}private char _gender;

public char gender

set

}private int _age;

public int age

set

}public abstract void shout();

}public class pig : animal

}

//客戶端**

static void main(string args)

為什麼要用抽象方法,它有什麼好處?

抽象方法是乙個模板或約束,避免了子類的隨意性,需要實現它的類必須重寫它的抽象那個方法。

舉個例子

就拿動物的抽象類來說,我們定義乙個叫聲的方法,我們只知道有個方法,讓動物叫,可是動物多了,到底讓那個叫我們並不知道,它只是乙個抽象的類,不具體,也沒有指明讓那個物件叫。這也就是說抽象方法為什麼沒有方法體了,如果有方法體我們就可以準確的知道那個動物叫了,它的叫聲什麼可以準確的形容出來了。要是我們想要準確的知道某個動物的叫聲是什麼就要重寫它。

C 之抽象類和抽象方法

概述 abstract 關鍵字 抽象類不能被例項化,抽象方法不能有方法體,抽象類中的所有抽象方法必須在子類中重寫 override 乙個抽象類可以同時包含抽象方法和非抽象方法。abstract修飾符可以和類 方法 屬性 索引器及事件一起使用。在類宣告中使用abstract修飾符以指示類只能是其他類的...

抽象方法和抽象類

思想 利用通用介面建立的一種基本形式,以此表示所有匯出類的共同部分 概念 1 抽象方法 僅有宣告,沒有方法體 2 抽象類 含抽象方法的類 要點 抽象類可以不含抽象方法 抽象類不能被例項化 不能使用 new 關鍵字 子類繼承抽象父類而不提供方法定義,則子類也必須為抽象類 抽象類可以包含屬性 方法 構造...

抽象方法和抽象類

1.什麼是抽象方法 定義 乙個方法如果沒有方法體 乙個方法不使用 直接使用分號結束的方法,才是沒有方法體的方法 則這個方法就是抽象方法 一 宣告乙個方法,不適用 而直接分號結束 二 如果是抽象方法,必須使用 abstract 抽象關鍵字來修飾 三 不是抽象類,不可以使用抽象方法 2.什麼是抽象類 一...