static class PetGuide //定義一個用來擴展Dog類方法的靜態(tài)類
{
//給Dog類擴展一個怎樣喂食的方法
static public void HowToFreedDog(this Dog dog)
{
Console.WriteLine("播放如何喂養(yǎng)一直狗狗的視頻");
}
}
Dog dog=new Dog(); //Dog類中沒有HowToFreedDog();方法
dog.HowToFreedDog(); //擴展之后Dog類可以直接調(diào)用這個方法,好像Dog類中有這個方法一樣
{
//給Dog類擴展一個怎樣喂食的方法
static public void HowToFreedDog(this Dog dog)
{
Console.WriteLine("播放如何喂養(yǎng)一直狗狗的視頻");
}
}
Dog dog=new Dog(); //Dog類中沒有HowToFreedDog();方法
dog.HowToFreedDog(); //擴展之后Dog類可以直接調(diào)用這個方法,好像Dog類中有這個方法一樣
2017-12-21
1.new關(guān)鍵字和virtual關(guān)鍵字都可以使子類去寫自己的方法(抒發(fā)個性),
2.但是new是隱藏父類方法,override則是重載父類方法
比如:實例化對象是使用父類的引用時, PET pet = new Dog();那么所有的對象都會按照父類的方法來運行。(這樣就無法發(fā)揮自己的個性了)
而在父類中使用virtual關(guān)鍵字聲明的方法,使用override重寫這個方法時,即便實例化對象是使用父類的引用,調(diào)用方法的時候還是會執(zhí)行自己重寫的方法
虛方法這一特點就正好詮釋了多態(tài)的作用:通過指向子類的父類引用,調(diào)用虛函數(shù)(或方法)會根據(jù)父類引用所指向的派生類的實際類型,調(diào)用派生類中的同名函數(shù)
2.但是new是隱藏父類方法,override則是重載父類方法
比如:實例化對象是使用父類的引用時, PET pet = new Dog();那么所有的對象都會按照父類的方法來運行。(這樣就無法發(fā)揮自己的個性了)
而在父類中使用virtual關(guān)鍵字聲明的方法,使用override重寫這個方法時,即便實例化對象是使用父類的引用,調(diào)用方法的時候還是會執(zhí)行自己重寫的方法
虛方法這一特點就正好詮釋了多態(tài)的作用:通過指向子類的父類引用,調(diào)用虛函數(shù)(或方法)會根據(jù)父類引用所指向的派生類的實際類型,調(diào)用派生類中的同名函數(shù)
2017-12-20
免費的就應(yīng)該點贊,即使有一些講的不那么全面。作為學(xué)生,老師講了,網(wǎng)絡(luò)上在查下也可以了??傊?,自己勤奮點就可以了。
2017-12-10
接口是引用類型,接口作用應(yīng)該是抽象重用。如果某個類實現(xiàn)某個接口,那另外的類如果要用該方法,只需要調(diào)用該接口就可以了。例如有個抓老鼠接口,然后貓類中實現(xiàn)了,那么狗類就可以直接使用該接口。但順序必須是排在貓類后面,因為抓老鼠是貓類實現(xiàn)的。
確實講的不清楚,我知道這樣調(diào)用節(jié)省,但我為什么要這樣用,什么場景適合用,就不知道了。不過看在免費份上,必須贊一個?
2017-12-10