-
1、靜態(tài)類(lèi) 包含靜態(tài)屬性和方法,被標(biāo)記為static 靜態(tài)類(lèi)不能創(chuàng)建實(shí)例,不能被繼承。 可以為靜態(tài)類(lèi)定義靜態(tài)構(gòu)造函數(shù)。 2、作用 主要用于基礎(chǔ)類(lèi)庫(kù)(math類(lèi))和擴(kuò)展方法。 3、如何擴(kuò)展方法 若有源代碼,直接添加一個(gè)新方法 如果不能修改單也不是密閉類(lèi),可以派生子類(lèi)擴(kuò)展 如果以上條件不滿足,可以使用靜態(tài)類(lèi)擴(kuò)展方法 3、在靜態(tài)類(lèi)中的靜態(tài)方法中參數(shù)中加入this關(guān)鍵,則可以直接利用對(duì)象調(diào)用方法就可以。 4、總結(jié)擴(kuò)展要求 擴(kuò)展方法所屬的類(lèi),必須是static類(lèi) 擴(kuò)展方法本身就是static方法 擴(kuò)展方法的第一個(gè)參數(shù)類(lèi)型,必須是this+類(lèi)名。 例如: Dog類(lèi)沒(méi)辦法修改,修改Dog類(lèi)就需要擴(kuò)展方法,需要一個(gè)喂養(yǎng)寵物的方法 static class PetGuide//擴(kuò)展Dog類(lèi)的方法 { static public void HowToFreedDog(this Dog dog) { Console.WriteLine("播放如何喂養(yǎng)一直狗狗的視頻"); } } ··· Dog dog=new Dog();//Dog類(lèi)中沒(méi)有HowToFreedDog();方法 dog.HowToFreedDog();//擴(kuò)展之后好像Dog類(lèi)中有這樣的方法一樣。 ···查看全部
-
繼承 class 子類(lèi):父類(lèi)查看全部
-
接口就是指定一組函數(shù)的成員,而不實(shí)現(xiàn)他們的引用類(lèi)型查看全部
-
隱藏方法:派生類(lèi)若想隱藏父類(lèi)的方法,可是用關(guān)鍵字new來(lái)聲明。查看全部
-
面向?qū)ο蟮暮诵氖且磺薪詫?duì)象,類(lèi)有屬性和行為查看全部
-
多態(tài):通過(guò)指向派生類(lèi)的基類(lèi)引用,調(diào)用虛函數(shù),會(huì)根據(jù)引用所指向派生類(lèi)的實(shí)際類(lèi)型,調(diào)用派生類(lèi)中的同名重寫(xiě)函數(shù)。查看全部
-
虛方法是一種靜態(tài)的方法的定義,多態(tài)是一種過(guò)程。查看全部
-
虛方法:聲明為virtual的方法就是虛方法?;?lèi)的虛方法可以在派生類(lèi)中使用override進(jìn)行重寫(xiě)。查看全部
-
面向?qū)ο缶幊讨?,都遵循一個(gè)原則:依賴(lài)倒置原則。換句話說(shuō)就是程序涉及要依賴(lài)于抽象類(lèi),而不以來(lái)于具體類(lèi)。 這樣做的一個(gè)好處就是程序具有很大的可擴(kuò)展性查看全部
-
隱藏方法:我們不能刪除基類(lèi)中的任何成員,但是可以用與基類(lèi)成員名稱(chēng)相同的成員來(lái)屏蔽基類(lèi)成員。查看全部
-
繼承只有單繼承,也就是只能繼承一個(gè)父類(lèi)。當(dāng)然該父類(lèi)還可以繼承自一個(gè)祖父類(lèi),直到object類(lèi)查看全部
-
object類(lèi)是所有類(lèi)的共同基類(lèi),它是唯一的非派生類(lèi),是繼承層次結(jié)構(gòu)的基礎(chǔ)。對(duì)于其他類(lèi),父類(lèi)和子類(lèi)的概念都是相對(duì)的。查看全部
-
實(shí)現(xiàn)繼承:一個(gè)額勒派生于另一個(gè)基類(lèi)型,它擁有該基礎(chǔ)類(lèi)型的所有成員字段和函數(shù)查看全部
-
一個(gè)類(lèi)的實(shí)例對(duì)象就相當(dāng)于這個(gè)類(lèi)類(lèi)型的值; 比如 int 4;4是int類(lèi)型的值; Person new person() ;new person()是Person類(lèi)型的值或?qū)嵗?其實(shí)就相當(dāng)于創(chuàng)建一個(gè)Person類(lèi),然后Person person=new Person(); person 就是Person的一個(gè)類(lèi)型值查看全部
-
using System namespace MyArrayApplication { public class Array<T> { public int index; T[] a; public Array(int num) { a = new T[num]; } public T GetArray(int index) { return a[index]; } public void SetArray(int index, T value) { a[index] = value; } } public class Print { static void Main(string[] args) { Array<char> b = new Array<char>(5); for (int i = 0; i < 5; i++) { b.SetArray(i, (char)(i + 98)); Console.Write(b.GetArray(i)+" "); } Array<double> d = new Array<double>(20); for (int k = 0; k< 20; k++) { d.SetArray(k, Convert.ToDouble(k + 5.2)); Console.Write(d.GetArray(k) + " "); } Console.ReadKey(); } } }查看全部
舉報(bào)
0/150
提交
取消