日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

# C# 学习笔记(4) 类

發布時間:2025/4/16 C# 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 # C# 学习笔记(4) 类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C# 學習筆記(4) 類

面向對象編程主要是為了寫出一個通用的代碼,屏蔽差異,方便開發大型項目。類就是面向對象編程的核心之一。和C語言的結構體相比,結構體擁有的功能,類統統都有,除此之外,類還有許多新特性。

類的構成

[其他修飾符] [訪問修飾符] class 類名 {字段;屬性;方法;構造函數;析構函數; }

字段

存放類的私有數據,通常只能被類的屬性訪問。

屬性

保護字段,對字段的賦值和取值進行限定。例如有一個學生類,類中有成績這個字段,類外只可以獲取到成績的等級–優良中差,這時就可以給這個字段加上一個屬性,通過訪問屬性間接訪問成績字段。為了保證程序封裝性,類外一般是不允許訪問類內的字段的,一般字段和屬性是成對出現的。

public class Student{int _Score; //成績字段public string Score //成績屬性{get { if(_Score < 60){return "差";}else if(_Score < 80){return "中";}else if(_Score < 90){return "良";}else{return "優";}}set { _Score = int.Parse(value); }}}

屬性的本質就是兩個方法,一個叫get()一個叫set()。
既有get()也有set()我們誠之為可讀可寫屬性。
只有get()沒有set()我們稱之為只讀屬性
沒有get()只有set()我們稱之為只寫屬性

方法

方法也就是C語言中的函數,面向對象里面叫方法。

  • C語言中,函數名字不能重復,而C#中允許方法名重復(方法重載),不過要求方法參數要么個數不同,要么類型不同。
public class Student{int _Score; //成績字段public string Score //成績屬性{get { if(_Score < 60){return "差";}else if(_Score < 80){return "中";}else if(_Score < 90){return "良";}else{return "優";}}set { _Score = int.Parse(value); }}//三個方法名字都叫Learn 方法1、2參數個數相同但是類型不同 方法1、3參數類型相同但是個數不同public void Learn(string subject, int time){Console.WriteLine("學習{0}科目, 學習時長:{1}", subject, time);}public void Learn(string subject1, string subject2){Console.WriteLine("學習{0}科目, 學習{1}科目", subject1, subject2);}public void Learn(string subject, int time, float ratio){Console.WriteLine("學習{0}科目, 學習時長:{1}, 學習效率:{2}", subject, time, ratio);}}

構造函數

作用:幫助我們初始化對象(給對象的屬性賦值)
構造函數是一個特殊的方法:
1)、構造函數沒有返回值,連void也不能寫。
2)、構造函數的名稱必須跟類名一樣。

  • 創建對象的時候會執行構造函數
  • 構造函數是可以有重載的。

類當中會有一個默認的無參數的構造函數,當你寫一個新的構造函數之后,不管是有參數的還是
無參數的,那個默認的無參數的構造函數都被干掉了。

public class Student{int _Score; //成績字段public string Score //成績屬性{get { if(_Score < 60){return "差";}else if(_Score < 80){return "中";}else if(_Score < 90){return "良";}else{return "優";}}set { _Score = int.Parse(value); }}//默認構造函數 也可以自己添加參數和方法體public Student(){}}

析構函數

作用:析構函數(destructor) 與構造函數相反,當對象脫離其作用域時(例如對象所在的函數已調用完畢),系統自動執行析構函數。析構函數往往用來做“清理善后” 的工作(例如在建立對象時用new開辟了一片內存空間,應在退出前在析構函數中用delete釋放)。

  • 區別于構造函數。它不能帶任何參數,也沒有返回值(包括void類型)。只能有一個析構函數,不能重載。如果用戶沒有編寫析構函數,編譯系統會自動生成一個缺省的析構函數,它也不進行任何操作。
    析構函數是一個特殊的方法:
    1)、析構函數不能被繼承或重載。
    2)、析構函數不能被用戶調用。
    3)、析構函數不能帶修飾或參數。
    4)、如果沒有析構函數系統會自動生成一個空的析構函數,對象使用的資源將有由GC Garbage Collection垃圾回收器回收(如果用戶想要自己釋放資源,則要自行 編寫析構函數)
public class Student{int _Score; //成績字段public string Score //成績屬性{get { if(_Score < 60){return "差";}else if(_Score < 80){return "中";}else if(_Score < 90){return "良";}else{return "優";}}set { _Score = int.Parse(value); }}//默認構造函數 也可以自己添加參數和方法體public Student(){}//默認析構函數 也可以自己添加方法體~Student(){}}

修飾符

訪問修飾符

  • public :公開的公共的
  • private:私有的,只能在當前類的內部訪問
  • protected:受保護的,只能在當前類的內部以及該類的子類中訪問。
  • internal:只能在當前項目中訪問。在同一個項目中,internal和public的權限是一樣。
  • protected internal:protected+internal

1)、能夠修飾類的訪問修飾符只有兩個:public、internal。
2)、在繼承中,當可訪問性不一致時,
子類的訪問權限不能高于父類的訪問權限,否則會暴漏父類的成員。

其他修飾符

  • partial部分類

    在合作開發時,一個類可能由多個人寫,每個人都寫在不同的文件中,這時可以使用partial來修飾類,表示當前只是該類的一部分。

  • sealed密封類

    丁克,不能被繼承

  • static

靜態和非靜態的區別
1)、在非靜態類中,既可以有實例成員,也可以有靜態成員。
2)、在調用實例成員的時候,需要使用對象名.實例成員;
在調用靜態成員的時候,需要使用類名.靜態成員名;
總結:靜態成員必須使用類名去調用,而實例成員使用對象名調用。
靜態函數中,只能訪問靜態成員,不允許訪問實例成員。
實例函數中,既可以使用靜態成員,也可以使用實例成員。
靜態類中只允許有靜態成員,不允許出現實例成員。

使用:
1)、如果你想要你的類當做一個"工具類"去使用,這個時候可以考慮將類寫成靜態的。
2)、靜態類在整個項目中資源共享。
只有在程序全部結束之后,靜態類才會釋放資源。

總結

以上是生活随笔為你收集整理的# C# 学习笔记(4) 类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。