-
屏蔽數(shù)據(jù)成員:查看全部
-
string,Dog 逗號查看全部
-
泛型定義查看全部
-
泛型方法查看全部
-
靜態(tài)類和靜態(tài)成員 1、類的靜態(tài)成員 成員被標(biāo)記為static時,就是靜態(tài)成員。靜態(tài)成員將會被類的所有勢力共享,所有實(shí)例都訪問統(tǒng)一內(nèi)存位置。 靜態(tài)成員跟實(shí)例成員分開存放。靜態(tài)成員存放在堆中。 2、靜態(tài)成員訪問 直接通過類名訪問,普通成員需要通過實(shí)例訪問。 3、靜態(tài)成員聲明周期 獨(dú)立任何實(shí)例,沒有實(shí)例也可以訪問。靜態(tài)成員使用之前編譯器已經(jīng)幫忙完成初始化。 4、靜態(tài)函數(shù)不能訪問實(shí)例成員,僅能訪問其他靜態(tài)成員,普通方法可以訪問靜態(tài)成員 5、靜態(tài)構(gòu)造函數(shù) 用于初始化靜態(tài)字段 在引用任何靜態(tài)成員之前,和創(chuàng)建任何實(shí)例之前調(diào)用。 與類同名,使用static,無參數(shù),沒有訪問修飾符,普通構(gòu)造函數(shù)可以重載的查看全部
-
結(jié)構(gòu)和類 1、不同點(diǎn) 結(jié)構(gòu)是值類型(在棧中),類是引用類型(在堆中) 結(jié)構(gòu)不支持繼承,類支持繼承 結(jié)構(gòu)不定義默認(rèn)構(gòu)造函數(shù),編譯器會定義 2、使用場合 結(jié)構(gòu)由于分配內(nèi)存塊,作用域借書即被刪除。不需要垃圾回收,用于小型數(shù)據(jù)結(jié)構(gòu),傳遞過程會復(fù)制,應(yīng)該用ref提高效率。 類用于其他需要繼承體系的場合。 例如:定義食物是一個不需要長期存儲的數(shù)據(jù)類型,吃完就沒有了,所以可以定義一個食物struct查看全部
-
接口 1、接口就是制定一組函數(shù)成員,而不實(shí)現(xiàn)他們的引用類型,用interface聲明。接口函數(shù)不能用其他訪問修飾符修飾,默認(rèn)為public。 2、接口用來被實(shí)現(xiàn) 例如Cat:ICatchMice{ //實(shí)現(xiàn)接口函數(shù) } 3、一個類可以實(shí)現(xiàn)多個接口,當(dāng)一個類同時繼承基類和實(shí)現(xiàn)接口時,應(yīng)該將基類寫在最前面,用逗號隔開 4、一個類實(shí)現(xiàn)接口時,必須實(shí)現(xiàn)接口聲明的函數(shù)。 5、可以通過接口引用調(diào)用接口中的方法,也可通過實(shí)例調(diào)用接口方法。例子 爬樹為一個接口,抓老鼠為一個接口,當(dāng)貓這個類實(shí)現(xiàn)這兩個接口時, Cat c=new Cat("tom"); 爬樹 ci=(爬樹)c; c.pashu();//通過實(shí)例調(diào)用接口方法 ci.pashu();//通過接口引用調(diào)用接口方法查看全部
-
密閉類和密閉方法 1、密閉類:有些類不希望其他人通過繼承來修改,禁止產(chǎn)生派生類。 密閉方法;禁止他人重寫該方法。 2、用sealed修飾類就是密閉類,修飾方法就是密閉方法 3、若派生類中的重寫方法(用override修飾的方法)不想再被重寫,則可以同時用override和sealed進(jìn)行修飾。查看全部
-
1、抽象方法 在方法聲明前加abstract,抽象方法不能有實(shí)際的函數(shù)體,抽象方法必須在派生類中重寫,才能調(diào)用。虛方法在派生類中可以不重寫,調(diào)用時就是調(diào)用的是基類中的方法。 2、抽象類 一個類中含有抽象方法就是抽象類 抽象類中可以含有普通方法可以包含抽象成員、普通成員、抽象方法和普通方法 抽象類不能實(shí)例化 抽象類的存在只有一個目的就是被繼承。 抽象類的抽象成員必須在派生類中用override關(guān)鍵字實(shí)現(xiàn),否則不能實(shí)例化查看全部
-
1、派生類對象中,有一部分是基類部分,在執(zhí)行派生類的構(gòu)造函數(shù)之前,將會隱式或者顯示調(diào)用基類構(gòu)造函數(shù),也就說肯定會調(diào)用基類構(gòu)造函數(shù)的。 2、調(diào)用順序 實(shí)例成員初始化->基類構(gòu)造函數(shù)->派生類的構(gòu)造方法 3、調(diào)用基類構(gòu)造函數(shù):隱式調(diào)用和顯示調(diào)用 //隱式調(diào)用 class MyDerived:MyBase{ MyDerived(){ ... } } //顯示調(diào)用 class MyDerived:MyBase{ MyDerived():base() { ... } } 4、調(diào)用當(dāng)前類的其他構(gòu)造函數(shù) 例如;Pet(int age,string name):this(name){...} //調(diào)用進(jìn)行公共初始化的函數(shù) Pet(string name){...} //構(gòu)造函數(shù)重載 5、對于基類中的字段最好在基類中完成初始化查看全部
-
1、關(guān)于虛方法和多態(tài) (1)重寫虛方法必須具有相同的可訪問性,并且基類 方法不能是private (2)不能重寫static方法或者非虛方法 (3)方法、屬性、索引器、事件,都可以聲明為virtual或者override 2、虛方法和多態(tài) (1)虛方法:聲明為virtual的方法就是虛方法?;惖奶摲椒梢栽谂缮愔惺褂胦verride進(jìn)行重寫 (2)多態(tài):通過指向派生類的基類引用,調(diào)用虛函數(shù),會根據(jù)引用所用所指向派生類的實(shí)際類型,調(diào)用派生類中的同名重寫函數(shù),便是多態(tài)。多態(tài)是一種過程。 注意:通過基類引用建立統(tǒng)一關(guān)系;通過同名重寫函數(shù)派生類的個性得以張揚(yáng)。查看全部
-
事件的聲明查看全部
-
虛方法和多態(tài) 面向?qū)ο缶幊讨?,,都遵循一個原則:依賴倒置原則。就是程序設(shè)計要依賴抽象類(pet),而不依賴于具體類(dog)。 基類的引用 可以通過一個基類類型的引用調(diào)用指向派生類,通過指向派生類的基類引用,只能訪問派生類中的基類部分。例如 namespace Program{ class Pet { public string name; public void PrintName() { Console.Write("Pet's name is"+name); } class Dog { new public void PrintName() { Console.Write("寵物的名字是"+name); } class Cat { } //當(dāng)使用基類引用時,運(yùn)行結(jié)果為“Pet's name is JACK;Pet's name is TOM” public static void Main(string[] args) { Pet dog=new Dog(); dog.name="JACK"; dog.PrintName(); Pet cat=new Cat(); cat.name="TOM"; cat.PrintName(); } //當(dāng)時用派生類引用時,運(yùn)行結(jié)果為“寵物的名稱為JACK;Pet's name is TOM” /*public static void Main(string[] args) *{ *Dog dog=new Dog(); *dog.name="JACK"; *dog.PrintName(); *Pet cat=new Cat(); *cat.name="TOM"; *cat.PrintName(); }*/ }查看全部
-
1、通過在派生類中定義同名變量隱藏基類中的成員——隱藏方法 2、語法細(xì)節(jié) 屏蔽數(shù)據(jù)成員:在派生類中聲明名稱和類型相同的成員。 屏蔽函數(shù)成員:在派生類中聲明新的帶有相同函數(shù)簽名的成員(注意:并不包括返回類型相同) 讓編譯器知道:可以添加new關(guān)鍵字,否則會有報警。查看全部
-
定義List<>list=new List<>();查看全部
舉報
0/150
提交
取消