基础才是重中之重~方法override详解
回到 目錄
之所以寫這篇文章,完全是因為這次代碼審核,這次代碼審核過程當(dāng)中,出現(xiàn)了很多我認(rèn)為基礎(chǔ)知識不夠扎實的問題,所以,打算把它們記錄下來,共大家分享。
方法的override,即方法的覆寫或者重寫,有時還是習(xí)慣叫它英文override,它是指將父類的abstract或者virtual方法進行重新設(shè)計,可以將新的功能加入其中,看起來很不錯,但在使用過程中,有時我們可能拿不準(zhǔn)它,下面我說幾點:
一 父類是抽象類,這時,它的實例化需要通過子類來完成,這時的override是子類最后重寫的
二 父類是普通類,這時,它的實例化工作如果由自己完成,結(jié)果就是父類virtual的結(jié)果,與它的子類無關(guān)。
三 父類是普通類,它的實例化工作如果由子類完成,那么,它的結(jié)果就是子類方法override的結(jié)果
OK,下面我們來說一下例子,它由father類和sons類組成,father類是一個普通類,在這實現(xiàn)當(dāng)中,它很可能是個泛型類,如倉儲模式的實現(xiàn)
/// <summary>/// 一個爸爸/// </summary>class Father{public virtual void print(){Console.WriteLine("我是爸爸");}}下面是兒子A對爸爸的print方法的重寫工作
/// <summary>/// 一個兒子A/// </summary>class SonA : Father{public override void print(){Console.WriteLine("我是兒子");//override father class print method. }public void sonPrint(){base.print(); //我是爸爸print();//我是兒子 }}而下面是對print方法的各種調(diào)用工作,包括了實現(xiàn)化的方式
static void Main(string[] args){SonA son = new SonA();son.sonPrint(); //我是爸爸,我是兒子Father father = new Father();father.print();//我是爸爸Father son2 = new SonA();son2.print();//兒是兒子}OK,通過結(jié)果我們可以看出:
在兒子類里,base.print()方法走的是爸爸的print;print走的是兒子
在兒子類以外,使用爸爸自己去實例化后,print走的是爸爸的;使用兒子進行實例化后,print方法走的是兒子重寫后的;
回到 目錄
總結(jié)
以上是生活随笔為你收集整理的基础才是重中之重~方法override详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bootstrap3.0学习第十轮(下拉
- 下一篇: 配置Apache服务器的PHP运行环境