日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 学习笔记(6) 多态

發(fā)布時間:2025/4/16 C# 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 学习笔记(6) 多态 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C# 學(xué)習(xí)筆記(6) 多態(tài)

面向?qū)ο笕筇匦?#xff0c;封裝、繼承和多態(tài),前兩個很容易理解,但是多態(tài)就不好描述了,每個人對多態(tài)的看法可能都不一樣,個人認(rèn)為多態(tài)就是通過繼承實現(xiàn)的不同對象調(diào)用相同方法,表現(xiàn)出不同行為。舉個例子,假設(shè)有一個動物類,里面有個吃東西的方法,然后貓類和人類都從動物類繼承過來吃東西這個方法,但是人和貓吃東西肯定有區(qū)別的,因此會通過種種手段,分別實現(xiàn)人類和貓類自己的吃東西方法。通過繼承,人和貓(不同對象)調(diào)用吃東西(相同方法),表現(xiàn)出不同行為(吃東西有區(qū)別)

重載

C#中允許方法名重復(fù)(方法重載),不過要求方法參數(shù)要么個數(shù)不同,要么類型不同。

//三個方法名字都叫Learn 方法1、2參數(shù)個數(shù)相同但是類型不同 方法1、3參數(shù)類型相同但是個數(shù)不同public void Learn(string subject, int time){Console.WriteLine("學(xué)習(xí){0}科目, 學(xué)習(xí)時長:{1}", subject, time);}public void Learn(string subject1, string subject2){Console.WriteLine("學(xué)習(xí){0}科目, 學(xué)習(xí){1}科目", subject1, subject2);}public void Learn(string subject, int time, float ratio){Console.WriteLine("學(xué)習(xí){0}科目, 學(xué)習(xí)時長:{1}, 學(xué)習(xí)效率:{2}", subject, time, ratio);}

隱藏

重名時編譯器會提示警告,但是可以在子類重名的屬性或者方法前添加new關(guān)鍵字,這樣子類的屬性或者方法就會屏蔽掉父類的重名屬性或者方法,這時候如果想在子類中調(diào)用被屏蔽掉的父類屬性或方法,需要使用關(guān)鍵字base. 調(diào)用

class Program{static void Main(string[] args){Student student = new Student();student.Eat();Console.ReadKey();}}public class Person{public string Name;public int Age;public bool Gender;public Person(){Console.WriteLine("人類構(gòu)造函數(shù)");}public Person(int age){this.Age = age;Console.WriteLine("人類構(gòu)造函數(shù) 人類年紀(jì):{0}", this.Age);}public void Eat(){Console.WriteLine("父類吃飯吃兩碗");}}class Student : Person{public Student():base(50){Console.WriteLine("子類構(gòu)造函數(shù)");}public new void Eat(){Console.WriteLine("子類吃飯吃兩碗");}}
  • 上面代碼會輸出:

    人類構(gòu)造函數(shù) 人類年紀(jì):50子類構(gòu)造函數(shù)子類吃飯吃兩碗

虛方法

虛方法在父類中方法前面加關(guān)鍵字 virtual 這樣就將該方法標(biāo)記為虛方法,子類如果想要重寫該虛方法,可以寫一個同名方法,在方法前加關(guān)鍵字 override ,如果不重寫該方法,則子類可以調(diào)用父類的虛方法。注意虛方法和上面的隱藏很像,但是不同的是,使用里氏轉(zhuǎn)換將子類裝進(jìn)父類,然后直接調(diào)用被子類隱藏的方法,會發(fā)現(xiàn)調(diào)用的是父類的方法,而該方法如果被子類重寫則實際調(diào)用的是子類重寫的方法

class Program{static void Main(string[] args){//里氏轉(zhuǎn)換 子類可以放在父類對象里Person student = new Student();student.Eat();Person maleStudent = new MaleStudent();maleStudent.Eat();Console.ReadKey();}}public class Person{public string Name;public int Age;public bool Gender;public Person(){Console.WriteLine("人類構(gòu)造函數(shù)");}public Person(int age){this.Age = age;Console.WriteLine("人類構(gòu)造函數(shù) 人類年紀(jì):{0}", this.Age);}public virtual void Eat(){Console.WriteLine("人類吃飯吃兩碗");}}class Student : Person{public new void Eat(){Console.WriteLine("學(xué)生吃飯吃兩碗");}}class MaleStudent : Person{public override void Eat(){Console.WriteLine("男學(xué)生吃飯吃兩碗");}}
  • 上面代碼會輸出:

    人類構(gòu)造函數(shù) 人類年紀(jì):50子類構(gòu)造函數(shù)人類吃飯吃兩碗人類構(gòu)造函數(shù)男學(xué)生吃飯吃兩碗

由上面輸出可以看出 重寫和隱藏的區(qū)別 當(dāng)使用子類裝進(jìn)父類后,直接調(diào)用重寫的方法,該方法依然是子類的方法,而隱藏的則是父類的方法。

抽象類

當(dāng)父類中的方法不知道如何去實現(xiàn),也不需要被實例化的時候,可以考慮將父類寫成抽象類,將方法寫成抽象方法。比如說需要實現(xiàn)一些動物類和植物類,這時就可以抽象出一個父類,生命類,生命從定義上就是一個抽象的,而且也不需要實例化該類,就可以將該類定義為抽象類,生命類有一個方法————活著,至于具體怎么活,每種生物都有自己的活法,因此這里也沒辦法實現(xiàn),可以將活著定義為抽象方法。

  • 抽象成員必須標(biāo)記為abstract,并且不能有任何實現(xiàn)。
  • 抽象成員必須在抽象類中。
  • 抽象類不能被實例化
  • 子類繼承抽象類后,必須把父類中的所有抽象成員都重寫。(除非子類也是一個抽象類,則可以不重寫)
  • 抽象成員的訪問修飾符不能是private
  • 在抽象類中可以包含實例成員。
    并且抽象類的實例成員可以不被子類實現(xiàn)
  • 抽象類是有構(gòu)造函數(shù)的。但不能被實例化。
  • 如果父類的抽象方法中有參數(shù),那么。繼承這個抽象父類的子類在重寫父類的方法的時候必須傳入對應(yīng)的參數(shù)。如果抽象父類的抽象方法中有返回值,那么子類在重寫這個抽象方法的時候 也必須要傳入返回值。
  • class Program{static void Main(string[] args){Animal animal = new Animal();animal.GetAge();animal.Live();Console.ReadKey();}}/// <summary>/// 抽象類 生物類/// </summary>public abstract class Biology{//實例成員public int Age;public void GetAge(){Console.WriteLine("活了{(lán)0}年", this.Age);}/// <summary>/// 抽象方法 活著/// </summary>public abstract void Live();}public class Animal : Biology{public override void Live(){Console.WriteLine("Animal重寫的Live");}public void Sleep(){Console.WriteLine("Animal Sleep");}public int Sleep(int time){Console.WriteLine("Animal在{0}點Sleep", time);return time;}public virtual void EatFood(){Console.WriteLine("Animal EatFood");}}
    • 上面代碼會輸出:

      活了0年Animal重寫的Live

    接口

    接口定義了所有類繼承接口時應(yīng)遵循的語法合同。接口定義了語法合同 “是什么” 部分,派生類定義了語法合同 “怎么做” 部分。比如說支付寶提供了一個接口,你只要將這個接口實現(xiàn),就可以調(diào)用支付寶的功能。抽象類在某種程度上與接口類似,但是,它們大多只是用在當(dāng)只有少數(shù)方法由基類聲明由派生類實現(xiàn)時。

  • 一個類能同時實現(xiàn)多個接口,還能在實現(xiàn)接口的同時再繼承其他類,并且接口之間也可以繼承。
  • 接口中的成員不允許使用 public、private、protected、internal 訪問修飾符。
  • 接口中的成員不允許使用 static、virtual、abstract、sealed 修飾符。
  • 在接口中不能定義字段,可以定義方法、自動屬性、索引器
  • 在接口中定義的方法不能包含方法體。
  • interface IMyInterface1{int Age{get;set;}void IMyInterface1Test();}interface IMyInterface2{void IMyInterface2Test();}class Test : IMyInterface1, IMyInterface2{int _age;public int Age{//屬性實現(xiàn) 本質(zhì)上也是一種方法get { return _age; }set { _age = value; }}//方法實現(xiàn)public void IMyInterface1Test(){Console.WriteLine("接口1實現(xiàn)");}public void IMyInterface2Test(){Console.WriteLine("接口2實現(xiàn)");}}

    總結(jié)

    以上是生活随笔為你收集整理的C# 学习笔记(6) 多态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 8090理论片午夜理伦片 | 麻豆成人91精品二区三区 | 色姑娘综合 | 丰满人妻一区二区三区免费 | 免费看日韩 | 一区二区中文字幕 | jizz日本女人| 欧美激情偷拍 | 扩阴视频 | 亚洲高清久久久 | 国产亚洲综合精品 | 99精品国产成人一区二区 | 亚洲经典自拍 | 99久久精品国产色欲 | 黄色第一网站 | 午夜一二三 | 亚洲影院在线观看 | 99九九精品视频 | 久久老熟女一区二区三区 | 国产乱强伦一区二区三区 | www在线播放 | 国产91福利| 欧美一级一区二区三区 | 无码粉嫩虎白一线天在线观看 | 亚洲午夜在线观看 | 国产精品久久久久久久久岛 | 佐佐木明希电影 | 成人www.| 日韩性xxx | 亚洲成a人 | 波多野一区二区三区 | 亚洲AV无码久久精品色三人行 | 亚洲图片中文字幕 | 欧美xxxxhd| 一级毛毛片 | 欧美极品少妇无套实战 | 精品国产精品三级精品av网址 | 亚洲自拍中文 | 人人爱人人射 | 黄色视屏免费 | 黄色高清在线观看 | 天天宗合网| 日韩欧美一区二区三区久久婷婷 | 中文字幕av亚洲精品一部二部 | 91日韩视频| 中国一级黄色大片 | 日本中文字幕视频在线 | 国产精品人成在线观看免费 | 天天天天天干 | 超碰人人射 | 波多野结衣网站 | 国产女主播在线观看 | 国产乱在线 | av黄色国产 | 欧美在线中文字幕 | 日韩午夜网站 | 亚洲欧美日韩中文字幕在线观看 | 久久人妻少妇嫩草av无码专区 | 成人午夜视频免费看 | 无码少妇一区二区 | 日韩一区二区三区四区五区六区 | 美女一级黄色片 | 亚洲不卡在线视频 | 欧洲成人精品 | 色屁屁 | 91麻豆精品一二三区在线 | 少妇丰满尤物大尺度写真 | 日韩大尺度视频 | 久久久久久久久久一区 | 亚洲男女激情 | 久久久久久久偷拍 | 一本加勒比北条麻妃 | 日韩av三级在线 | 国产精品天天狠天天看 | 国产精品入口麻豆 | 日韩av专区片 | 在线视频国产一区 | 成人欧美一区二区三区小说 | 91人人干| 亚洲丁香网 | 国产成人精品影视 | 精品久久免费视频 | 天天干天天操天天射 | 黑人3p波多野结衣在线观看 | 男人天堂色 | 天堂网一区二区三区 | 色之久久综合 | 欧美 日韩 人妻 高清 中文 | 又黄又爽在线观看 | 国产性xxxx高清 | 污视频在线 | 亚洲一级片在线观看 | a级大片免费看 | 免费在线激情视频 | 性久久久 | 日本福利一区二区三区 | 久久福利影视 | 伊伊综合网 | 蜜臀av一区二区三区激情综合 |