1.析構(gòu)方法
格式: ~類名(){ };
沒有返回值
沒有參數(shù)列表
不能重載
沒有訪問修飾符
垃圾回收機(jī)制會(huì)自動(dòng)調(diào)用 不能手動(dòng)調(diào)用
析構(gòu)方法只能定義在類里址愿,一個(gè)類只有一個(gè)析構(gòu)方法
析構(gòu)方法在繼承中順序執(zhí)行:先派生類 再父類
如果不在一個(gè)類中 從后往前執(zhí)行析構(gòu)方法
2.匿名類型
根據(jù)賦的初值自動(dòng)推導(dǎo)變量類型
必須要賦初始值 否則系統(tǒng)無法推導(dǎo)
變量類型一經(jīng)確定 就不允許改變
3.密封
C#允許使用sealed關(guān)鍵字來修飾類和方法
當(dāng)修飾類的時(shí)候表示該類不允許被繼承
當(dāng)sealed修飾方法的時(shí)候表示該方法不能派生類被重寫锐朴,但是可以被派生類覆蓋(隱藏 new).
用法:派生類可以通過sealed阻止被繼承殷费,內(nèi)部方法通過sealed可以阻止被重寫追驴。
對(duì)一個(gè)類應(yīng)用 sealed 修飾符時(shí)眉枕,此修飾符會(huì)阻止其他類從該類繼承。
還可以在重寫基類中的虛方法或虛屬性的方法或?qū)傩陨鲜褂?sealed 修飾符。
(不是重寫的方法不能密封)
4.多態(tài) (提高代碼的維護(hù)性和拓展性? 不是很理解...)
同一操作速挑,作用不同對(duì)象有不同的實(shí)現(xiàn)
里氏轉(zhuǎn)換
原則一:子類對(duì)象可以直接賦值給父類對(duì)象
Person p = new Student();
當(dāng)父類指針指向子類實(shí)例對(duì)象的時(shí)候
調(diào)用虛方法執(zhí)行的是派生類里面重寫之后的方法
調(diào)用隱藏方法執(zhí)行的是基類里面的原方法
里氏轉(zhuǎn)換的作用:消除不同子類之間類型的差異谤牡,把其類型轉(zhuǎn)換成統(tǒng)一的數(shù)據(jù)類型,這樣就可以寫出一套通用的代碼姥宝,也就是可以最大限度的重用代碼翅萤,同時(shí)也提高了程序開發(fā)的效率。
原則二:父類可以轉(zhuǎn)換成子類腊满,這樣就可以調(diào)用子類里面的公有成員了
as 關(guān)鍵字
將父類指針轉(zhuǎn)向?qū)嶋H類型
轉(zhuǎn)換之后無論是調(diào)用虛方法還是隱藏方法套么,最終執(zhí)行的都是派生類里面的方法
Student s = p as Student;
多態(tài)的好處:
1.把不同子類對(duì)象都當(dāng)做父類來看,屏蔽不同子類對(duì)象之間的差異碳蛋,寫出通用的代碼胚泌,做出通用的編程,以適應(yīng)需求的不斷變化肃弟。
2.提高代碼的維護(hù)和可擴(kuò)展性玷室。
is 關(guān)鍵字
判斷一個(gè)對(duì)象是否是指定的類型,是的話返回true 不是的話返回false
用一個(gè)bool 值變量來接收
先判斷Student 是否是 Person類型 如果是就強(qiáng)制轉(zhuǎn)換笤受,否則就不轉(zhuǎn)換
如果不判斷轉(zhuǎn)化不成功系統(tǒng)會(huì)報(bào)錯(cuò)
Person person = new Person(); Student student = new Student();
bool flag = student is person;
If (flag) { Person per = (Person)student; }