日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩女优网站 | 欧美精选一区二区 | 亚洲性图第一页 | 四虎国产成人精品免费一女五男 | 久久精品这里有 | 日韩欧美日本 | 日韩精品一区不卡 | 免费看av的网址 | 青青青青青操 | 国产在线视频一区 | 精品久久在线 | 国产精品熟妇一区二区三区四区 | 国产欧美一区二区三区白浆喷水 | 国产福利一区二区视频 | 黄瓜视频污在线观看 | 性生交大片免费看女人按摩 | 久久看视频 | 国产成人精品影视 | 亚洲精品在线看 | 国产一卡在线 | 欧美日韩国产大片 | 精品在线91 | 色妞色视频一区二区三区四区 | 黄色在线观看视频网站 | 久久经典 | 成人动漫免费观看 | 无码h肉动漫在线观看 | 欧美激情三级 | 日本视频黄色 | 色偷偷成人 | 激情小说欧美色图 | 丝袜美女啪啪 | 亚洲熟女综合一区二区三区 | 国产精品久久 | 你懂的网址在线观看 | 亚洲欧美日韩综合在线 | 成人免费视频观看视频 | 男女网站在线观看 | 欧美一区欧美二区 | 无码任你躁久久久久久老妇 | 国产15页| 国产精品99一区二区三区 | 国产精品羞羞答答 | 91视频免费在线观看 | 啪视频在线 | 人人爽人人爽人人片av | 外国黄色网 | 亚洲中文字幕97久久精品少妇 | 香蕉视频污视频 | 色呦呦呦呦 | 国产人妻久久精品一区二区三区 | 爱臀av | 日韩三级视频在线播放 | 浓精喷进老师黑色丝袜在线观看 | 骚虎av | 久久99热精品 | 91精产国品一二三区在线观看 | 中国黄色网址 | 国产成年人 | 日韩福利影院 | 国产对白videos麻豆高潮 | 免费黄色网址视频 | 亚洲欧美成人 | 操人视频网站 | 欧美性一级片 | 国产欧美综合一区 | 欧美日韩国产综合网 | 麻豆传谋在线观看免费mv | 久一精品 | 国产视频精品久久 | 日韩成人一区二区视频 | 嫩草在线视频 | 三级黄色在线 | 素人一区二区 | 亚洲欧美va天堂人熟伦 | 亚洲AV午夜福利精品一级无码 | 韩国性猛交╳xxx乱大交 | 久久久久麻豆v国产精华液好用吗 | 成人精品免费在线观看 | 国产精品亚洲精品 | 国产三级久久久 | 日韩视频网 | jizz日韩| 免费三级av | 日本一区二区高清免费 | 潘金莲一级淫片aaaaa | 人妻丰满熟妇岳av无码区hd | 我要看一级黄色片 | 国产免费午夜 | a黄色片| 91精品久久香蕉国产线看观看 | 亚洲免费一二三区 | 初高中福利视频网站 | 亚洲男人的天堂网站 | 国产三级短视频 | 成人片在线播放 | 欧美三级欧美成人高清 | 一区二区三区四区在线视频 | 99这里只有精品视频 |