亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C#基礎鞏固(1)-多態+簡單工廠

2019-11-14 13:54:20
字體:
來源:轉載
供稿:網友

多態 

如果要簡要的描述多態的話,我個人是這樣理解的:通過繼承,父類定義方法,具休的實現由子類進行。

01代碼

 //父類    class Person    {        public  virtual void  skill()  //vitrual -虛方法,方法可被重寫        {            Console.WriteLine("人會走路");        }    }    class Xiaoming:Person     {        public override void skill() //重寫父類方法        {            Console.WriteLine("小明會唱歌");        }    }    class XiaoHu : Person    {        public override void skill()        {            Console.WriteLine("小虎會游泳");        }    }    class PRogram    {        static void Main(string[] args)        {            Person p1 = new Xiaoming();//里氏轉換原則 可以將子類賦值給父類            Person p2 = new XiaoHu();            p1.skill();            p2.skill();            Console.ReadKey();        }    }

輸出:

 通過這個例子 Person 類定義了skill方法,方法的具體實現由子類進行。

 

02如果不重寫的話

即 如果子類的 override 改為new  那么父類和子類的方法是獨立的,此時執行下面的代碼

 //父類    class Person    {        public  virtual void  skill()        {            Console.WriteLine("人會走路");        }    }    class Xiaoming:Person     {        public new  void skill() //重寫父類方法        {            Console.WriteLine("小明會唱歌");        }    }       class Program    {        static void Main(string[] args)        {            Person p1 = new Xiaoming();//里氏轉原則            Xiaoming p2 = new Xiaoming();            p1.skill();            p2.skill();            Console.ReadKey();        }    }

輸出:

可以看出,p.skill();這里看.前面的對象,是什么類型的,就執行那個類里里面的 skill()方法,這里P1是Person類的,P2是Xiaoming類的。

多態+簡單工廠

如果我想通過輸入 小明,小虎。 這時候系統自動給顯示小明會什么,小虎會什么出來。

那么首先增加一個工廠類

生活中工廠是用來加工的產品的,同樣這里也是根據傳入的參數,加工后返回對應的結果

全部代碼

//父類    class Person    {        public  virtual void  skill()        {            Console.WriteLine("人會走路");        }    }    class Xiaoming:Person //繼承Person    {        public override  void skill() //重寫父類方法        {            Console.WriteLine("小明會唱歌");        }    }    class XiaoHu : Person    {        public override void skill()        {            Console.WriteLine("小虎會游泳");        }    }    //工廠類 --新增    class Factory    {        public static Person instance(string Name)        {            switch (Name)            {                case "1": return new Xiaoming();                case "2":return new XiaoHu();                default: return null;            }        }    }    class Program    {        static void Main(string[] args)        {            Console.WriteLine("請輸入序號查看技能,輸入1、2....");            Console.WriteLine("1.小明");            Console.WriteLine("2.小虎");            Console.WriteLine("輸入:");            string res = Console.ReadLine();            Console.WriteLine("結果:");            Person p = Factory.instance(res);            if (p != null)            {                p.skill();            }            else            {                Console.WriteLine("沒找到這個人");            }            Console.ReadKey();        }    }

 

執行結果:

此時,多態+簡單工廠就已經實現了。

拓展1:抽象(abstract)實現多態

   1. 前面的 virtual(虛方) 實現多態已經完成了,其實 抽象(abstract)實現多態也是大同小異

   2. abstract 和virtual的區別在于abstract 沒有方法體,方法都可以被重寫。

  實現:把上面完整的代碼 的父類改成 下面就完成了,功能一樣。

 //父類   abstract  class Person    {        public abstract void skill();//方法沒有方法體            }

拓展2:接口(interface)實現多態

 1.這里就不是繼承了,是實現接口的方法。

 2.接口的方法和抽象一樣沒有方法體。

實現:把上面完整的代碼的父類改成接口

 //接口   interface  Person    {         void  skill();    }

然后把原來子類的 override 去掉 ,因為接口(interface)是不能被重寫(override)的。虛方法(virtual),抽象(abstract)才能被重寫

OK,接口實現多態也是完成了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品久久久久久久99热浪潮| 久久99热这里只有精品国产| 久久久精品一区二区三区| 亚洲精品黄网在线观看| 国产视频精品一区二区三区| 亚洲视频在线看| 亚洲三级黄色在线观看| 性欧美亚洲xxxx乳在线观看| 国产成人jvid在线播放| 久久久精品久久| 国产在线观看精品一区二区三区| 国模精品一区二区三区色天香| 91老司机在线| 91亚洲国产成人久久精品网站| 在线观看不卡av| 伊人精品在线观看| 91久久国产综合久久91精品网站| 中文字幕av一区| 国产女人精品视频| 91豆花精品一区| 国产一区av在线| 欧美电影在线免费观看网站| 日韩专区中文字幕| 91大神福利视频在线| 欧美老少做受xxxx高潮| 欧美视频免费在线| 国产日韩换脸av一区在线观看| 日韩黄色在线免费观看| 91在线精品播放| 日韩欧美极品在线观看| 亚洲视频在线观看| 九色成人免费视频| 国产精品精品久久久| 欧美激情一二三| 欧美超级乱淫片喷水| 亚洲第一综合天堂另类专| 欧美性xxxxxxxxx| 成人美女免费网站视频| 国产精品视频免费观看www| 欧美日韩在线一区| 欧美黑人视频一区| 亚洲午夜国产成人av电影男同| 国产精品v片在线观看不卡| 亚洲国产精彩中文乱码av在线播放| 一区二区三区回区在观看免费视频| 亚洲国产97在线精品一区| 欧美一级大片视频| 国产精自产拍久久久久久| 欧美精品久久久久久久| 欧美影院在线播放| 亚洲黄色av女优在线观看| 久久精品国产清自在天天线| 亚洲综合小说区| 一本色道久久88亚洲综合88| 欧美成人在线免费| 4444欧美成人kkkk| 久久久极品av| 亚洲美女久久久| 国产欧美中文字幕| 韩国美女主播一区| 精品视频在线播放色网色视频| 欧美另类xxx| 高清一区二区三区四区五区| 亚洲free性xxxx护士白浆| 91理论片午午论夜理片久久| 日本视频久久久| 97人人爽人人喊人人模波多| 在线国产精品播放| 欧美国产视频日韩| 伊人精品在线观看| 国产精品视频公开费视频| 日韩高清人体午夜| 日本精品免费一区二区三区| 精品久久久一区二区| 久久久久久久999精品视频| 91成人精品网站| 亚洲日韩中文字幕在线播放| 精品中文字幕视频| 日韩欧美在线免费观看| 九九热r在线视频精品| 福利二区91精品bt7086| 欧美乱大交xxxxx| 亚洲免费精彩视频| 亚洲精品99久久久久| 久久偷看各类女兵18女厕嘘嘘| 色婷婷亚洲mv天堂mv在影片| 亚洲18私人小影院| 亚洲美女福利视频网站| 日韩激情视频在线| 国产+人+亚洲| 色老头一区二区三区在线观看| 国产中文字幕91| 国产欧美在线看| 欧美日韩加勒比精品一区| 亚洲小视频在线观看| 狠狠综合久久av一区二区小说| 国产精品视频一区国模私拍| 欧美日韩精品在线观看| 国产黑人绿帽在线第一区| 日韩av影视综合网| 欧美午夜www高清视频| 九九精品视频在线观看| xxx成人少妇69| 欧洲午夜精品久久久| 日产精品久久久一区二区福利| 日韩美女视频在线观看| 午夜精品久久久久久久99黑人| 亚洲欧美第一页| 亚洲欧美国产制服动漫| 亚洲jizzjizz日本少妇| 少妇精69xxtheporn| 91久久久久久久久| 亚洲2020天天堂在线观看| 国产美女直播视频一区| 亚洲激情国产精品| 中日韩美女免费视频网站在线观看| 黑人巨大精品欧美一区二区免费| 国产免费观看久久黄| 国内精品在线一区| 久久久精品视频在线观看| 欧洲亚洲在线视频| 国产啪精品视频网站| 国产成人精品优优av| 久久久噜噜噜久久| 国产精品高潮视频| 国产精品激情av电影在线观看| 国产成人精品一区二区| 亚洲欧美在线磁力| 黄色一区二区在线观看| 国产视频久久久| 九九视频这里只有精品| 成人精品视频在线| 欧美成人免费va影院高清| 91成人性视频| 九九热这里只有精品免费看| 视频在线观看99| 日韩精品极品毛片系列视频| 欧美高清自拍一区| 18一19gay欧美视频网站| 欧美精品videos另类日本| 欧美成人一区二区三区电影| 成人福利视频在线观看| 欧美激情国产日韩精品一区18| 91色在线视频| 欧美午夜激情在线| 国产精品国产三级国产aⅴ9色| 国产精品欧美一区二区三区奶水| 精品毛片网大全| 91av视频在线播放| 久久九九精品99国产精品| 欧美成人精品激情在线观看| 欧美日韩精品二区| 日本成人黄色片| 久久久免费av| 日韩电影视频免费| 亚洲女人天堂色在线7777| 欧美在线观看日本一区| 国产精品自拍偷拍视频| 亚洲第一精品自拍| 日本精品免费一区二区三区| 亚洲精品福利在线| 国产亚洲日本欧美韩国| 国产精品久久久久久超碰| 国产日产久久高清欧美一区|