C#是面向對象(object-oriented)類型的計算機語言,使用類(class)來體現面向對象的概念。
分類(classification)
我們在現實世界中,會遇到很多被分類的事物。例如,動物,汽車,家具。這些事物,在計算機語言中統稱為對象(object).拿汽車為例子,一個汽車最基本的配件、功能有:輪胎,方向盤、引擎,能駕駛等等。在編程世界裡,我們創建一個汽車對象的過程,稱為建模(modeling).建模的過程,就是將輪胎,方向盤,引擎,能駕駛等封裝到模型中。封裝是面向對象的幾大特點中的一個。我們將輪胎,方向盤,引擎以字段(fields)的形式存在在模型中,將能駕駛以方法(method)的形式存在模型中。下面代碼片段建了一個汽車模型,或者汽車類。
class Automobile { private string _steeringWheel; private string _tire; private string _engine; public void Run() { } }
當創建了一個類,這個類就會設定一個邊界來隔離類內部與類外部。那麼外部怎樣去訪問類內部的字段與方法呢?public修飾符,可以允許類外部訪問。private修飾符,只允許類內部訪問。
_steeringWheel,_tire,_engine,這些字段是private修飾,類外部不允許訪問。Run()方法,public修飾,外部可以訪問。我們將一些屬性,方法封裝在了Automobile類中。封裝的意義有兩個:
1.將屬性、方法集合在一起。換句話說,就是分類。將屬於汽車的配件,功能從其他事物中分類出來。
2.控制屬性,方法的訪問。通過給定訪問修飾符來控制類外部是否訪問類內部的字段,方法。
靜態方法、數據:
靜態方法,不同於普通方法,靜態方法只能通過類來調用。普通方法只能通過實例化對象來調用。例如:
class Test { pulbic static DoWrok() { DoWork2(); //即使DoWork2與該方法在一個類中,也不可以訪問。 //靜態方法只可以訪問靜態方法,靜態字段 } public void DoWork2() { } } Test.DoWork(); //可以調用成功 Test.DoWork(2);// 編譯失敗 Test object=new Test(); //實例化了Test對象 object.DoWork2(); //通過實例化對象來調用方法
一般靜態方法都是一些常用方法,在程序中使用比較頻繁,不用每次調用都要實例化對象。有靜態方法,也有靜態類。關於靜態類,應當注意一下幾點:
1.靜態方法中只允許靜態成員,換句話,靜態類中的字段,方法必須都是靜態的。
2.靜態類的用處,封裝一些常用的工具。
關於靜態字段,與常量字段需要注意,常量字段不可以標記為靜態類型,但是它靜態的。
匿名類(Anonymous Class):
顧名思義,匿名類就是沒有名字的類。我們用var關鍵字來定義它的類型。關於匿名類有一些限制:
1.匿名類只能包含公共字段
2.匿名類不可以包含方法
3.匿名類的字段不可以定義為靜態的
4.匿名類的字段必須初始化
var Anonymous =new {Name="Diana",Age=46};