C 中的抽象類和靜態類

2021-09-02 22:17:40 字數 1958 閱讀 6610

在了解抽象類和靜態類之前,先來複習c#中的構造和析構方法:

所謂構造:就是指在呼叫某個類對某個變數進行例項化操作的時候所執行的方法操作,主要是用來賦值初始化。

所謂析構:就是指當對某個類的變數進行銷毀操作的時候所執行的函式,一般是在主函式結束,系統要**記憶體的時候才呼叫析構函式。

using system;

namespace lesson12_2

//3.構造方法能夠新增引數(在構造的時候就需要引數)

// public person(string name , int age)

// //4.構造方法允許過載

// public person()

// public person(string name , int age)

// //5.如果沒有給類新增構造方法, 系統會提供乙個預設構造

// public person()

//6.構造方法前的訪問修飾符可以修改

// 如果將某個構造方法設為私有的,就不允許再通過這個構造方法建立物件

//private

private person()

public person(string name , int age)

//析構方法 - 在物件銷毀時呼叫,用於釋放記憶體

//1.每個類只能有乙個析構方法

//2.析構函式不能有返回值

//3.析構函式沒有訪問許可權修飾符 public等

//4.析構函式不能帶有引數,更不能過載

//5.析構函式只有在物件銷毀時系統自動呼叫,不能手動呼叫

~person ()

} class mainclass }

}

其實就是在生成這個類的某個變數的同時執行建構函式,再生成這個變數。

在了解抽象類之前,得先知道繼承的操作,另一篇文章有記錄

c#抽象類:

當乙個類定義為抽象類的時候(abstract),需要通過這個抽象類的子類來定義變數。

using system;

namespace lesson15_2

} //注意:子類在實現父類的抽象方法時,需要新增 override 關鍵字

//子類的抽象方法名稱和父類的抽象方法名稱相同

public override void eat ()

} public class water : food

} class mainclass }

}

從**最後的 f1.a 可以看出:以乙個抽象類為父類的變數照常可以使用抽象父類中的方法。

c#中的靜態類:

在計算機的記憶體中有5個區域來執行程式執行的儲存操作:

//1. 堆區 - 需要程式設計師手動開闢並管理記憶體

//2. 棧區 - 由系統自動完成記憶體管理

//3. 靜態區(全域性區) - 程式執行過程中記憶體中的資料一直存在

//4. 常量區 - 存放常量

//5. **區 - 存放程式執行所需要的**

其中,靜態區就是儲存靜態類變數、方法的區域。

using system;

namespace lesson16_2

//靜態構造方法,注意靜態構造方法之前 「不能 」新增訪問修飾符

//靜態構造方法會在首次訪問類中的靜態成員時呼叫,呼叫是在呼叫其它的方法之前

static b ()

} //靜態構造方法可以存在於靜態類中,也可以在普通類中

public class a

//普通方法

public void test ()

//除了靜態建構函式之外可以再寫乙個普通建構函式

//這個建構函式的執行 需要例項化

public a ()

} class mainclass }

}

C 中的抽象類 密封類 靜態類

通過在類定義前面放置關鍵字 abstract,可以將類宣告為抽象類,不能例項化。抽象類的用途是提供乙個可供多個派生類共享的通用基類定義。抽象類也可以定義抽象方法。方法是將關鍵字 abstract 新增到方法的返回型別的前面。抽象方法沒有實現,所以方法定義後面是分號,而不是常規的方法塊。抽象類的派生類...

C 中的抽象類中的 靜態方法

1 2 3 4 5 6 publicclasstestmain 如上面所示的程式是可以執行的。一般情況下抽象類中可以包含抽象方法和非抽象方法,靜態類中只能包含靜態成員,所有的靜態成員也只能包含在靜態類中。因為靜態static的本質是包含abstract和sealed的,所以靜態方法可以包含在抽象類中...

抽象方法抽象類 靜態類靜態方法靜態成員

一 抽象類和抽象方法 用abstract修飾的方法稱為抽象方法 含有抽象方法的類必須定義為抽象類 只是當做派生類的基類來使用 抽象的特徵 抽象方法只做宣告,不能包含具體實現 抽象方法旨在被繼承之後使用,所以不能用 private來修飾 2,抽象類不能被直接例項化 不能用new建立 3,抽象類可以沒有...