iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
0
自我挑戰組

初心者學C#系列 第 23

Day 23:C#的類別(下)(ಠヮಠ)

  • 分享至 

  • xImage
  •  

※以下內容皆是新手撰寫,內容可能不完全正確

好幾天沒睡好了ヽ(;▽;)ノ 好想撞牆喔
這篇接著上一篇講C#中關於類別的東東 (^_^)/就從C#裡面的類別建構器說起ㄅ~

C#的建構器(constructors) 是類別裡一種特別的成員函式/特殊的方法,趁我們在類別中創造物件時執行。建構器的名稱跟類別名稱一樣,沒有傳回的類型,作用是對資料成員做(初始)給值的動作。看著看著,這個東西聽起來很抽象,所以不用想得太複雜,當作 每次創造一個類別的實例(instance)時會自動用到一個看不見的建構器 ,像下面這樣的例子

class GoodGFriend {
//建構器
private yeet( ){ }
}

雖然預設的建構器(default constructor)裡頭沒有參數(parameters),必要時還是可以給它加個參數;這個時候建構器就變成 參數化建構器(parameterized constructor) 。如此一來,創造出來的物件一開始就會有個值。下面是應用參數化建構器的例子:

public ParaExample(int k){
	Console.WriteLine(“number: {0}”, int);
}

這裡順便釐清一個概念 – 實例(instance)跟物件(object)的差異
物件是從類別複製來的,而實例則是儲存物件記憶體位址的變數。同一個類別可以作出一堆物件,然後這一個個物件每個都能分出很多個實例。
物件導向(OOP)的大概念:
類別(classes) >> 物件(objects) >> 實例(instances)

C#的破壞器(destructors) 是在物件不在範疇內時執行,而破壞器的名稱是本身的類別名稱前面加上一個小波浪(~),不能傳回任何的值或放任何函數進去。如果有個方法叫Methodd( ),破壞器可以像這樣用:

public Methodd( ){
//程式碼
}
~Methodd( ){ //物件被刪除
//程式碼
}

再來就是寫小練習寫那麼久,一直不曉得是什麼作用的static了。C#類別中的 靜態成員(static members) 是使用了 static關鍵字(static keyword) 的類別成員,不論類別中有多少物件,這類別中的那個靜態成員只會有一個,也就是類別中那個成員只有一個實例。靜態變數用來定義常數頗方便,因為不用另創實例便能使用成員中的值。靜態成員可以在類別定義中、類別定義外或成員函數外初始化。
成員函式也可以是靜態的,而這類的函式只能存取靜態變數,且在物件出現前就存在了。

寫到懷疑人生。下一篇是繼承,一個前面一直出現的東西,相信這概念很重要(恐怕沒有什麼概念是真的不重要的(大概吧…))

參考資料:
(a) Tutorialspoint; C# - Classes
https://www.tutorialspoint.com/csharp/csharp_classes.htm
(b) GeeksforGeeks; C# | Constructors
https://www.geeksforgeeks.org/c-sharp-constructors/
(c) StackOverflow; Difference Between Object and Instance
https://stackoverflow.com/questions/3323330/difference-between-object-and-instance


上一篇
Day 22:C#中的類別(上)(ಠ益ಠ)
下一篇
Day 24:C#的繼承 [̲̅$̲̅(̲̅ ͡ಠ_ಠ)̲̅$̲̅]
系列文
初心者學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言