1. 程式人生 > >C# 面向對象

C# 面向對象

void 構造函數 自己 面向對象 編譯 破壞 重寫 概念 new

什麽是面向對象:面向對象就是所以的操作都是基於對象,就好比如讓車子走起來,走起來這個動作是車子這個對象的,車子.走起來。

面向對象的特性:三大特性“封裝、繼承、多態”

一、封裝

1.1封裝的概念:每個對象都包含有它能進行操作的所有信息,這個特性稱為封裝。這樣的方法包含在類中,通過類的實例來實現。

1.2封裝的優點:

A.良好的封裝能夠減少耦合(比如實現界面和邏輯分離)。

B.可以讓類對外接口不變,內部可以實現自由的修改。

C.類具有清晰的對外接口,使用者只需調用,無需關心內部。

D.因為封裝的類功能相對獨立,因此能更好的實現代碼復用。

E.可保護代碼不被無意中破壞,通過私有字段等實現內部。(私有屬性、方法)

二、繼承

2.1繼承的概念:當一個對象能夠獲取另一個對象的非私有屬性、方法作為定義為自己的部分或全部時,我們稱之為繼承關系。在繼承中,被繼承的對象叫做父類或者基類,繼承的對象稱為子類或者派生類。一個類可以有多個派生類,也就是一個類可以被多個類繼承.

2.2繼承的特點:

A.子類(派生類)擁有父類(基類)所以的非私有屬性、方法。//延續

B.子類可以擁有自己獨特的特性(屬性、方法)。//新增

C.子類可以以自己的方式實現父類的功能。//方法重寫

2.3繼承需要註意的地方

A.父類進行改變子類也會進行改變。

B.繼承破壞了封裝,父類的細節暴露給了子類,增加了耦合性。

C.父類的私有成員(屬性、方法)子類是無法訪問。

D.被“sealed”關鍵字修飾的類將不能被繼承;

E.被“protected”修飾的成員或者數據可以直接被派生類訪問,屬於“可以在家族裏分享的秘密”。

F.善用“base”關鍵字,顯示調用合適的自定義基類構造函數而不是使用默認構造函數。

E。C#只能一個類直接繼承一個類。

三、多態

3.1多態的概念:同一個操作用於不同的對象,會有不同的解釋,產生不同的結果。這種特性稱為多態性。

3.2多態的分類:編譯時的多態(重載)、運行時的多態(重寫)

重載(overload):重載指的是同一個類中有兩個或多個名字相同但是參數(參數簽名)不同的方法,(註:返回值不能區別函數是否重載),重載沒有關鍵字

。//方法名相同,參數或者返回類型不同

重寫(override):重寫是指子類對父類中虛函數或抽象函數的“覆蓋”,重載也叫過載。//虛方法是用virtual關鍵字聲明的方法

兩種重寫:

A.使用override關鍵字重寫.public override void Eat(){}//覆蓋父類方法

B.使用new關鍵字重寫.public new void Eat(){}//隱藏父類方法

兩者的區別在於如果我們使用override關鍵字,父類的方法被覆蓋,A b = new B();b.Eat();執行的是B(子類)的Eat()方法,因為父類的被覆蓋了(B繼承於A )。

我們使用new的話,只是隱藏了父類的方法,方法還是會被執行,b.Eat();則執行的是A(父類)的Eat()方法。我們修改成B b = new B();b.Eat();執行的就是B(子類)的了。

C# 面向對象