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

歡迎訪問 生活随笔!

生活随笔

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

C#

C#多态性的小记,父类,子类,虚方法,接口

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

一.父類,子類的繼承和虛方法重寫

?

class Program{static void Main(string[] args){Person objperson= new Person ();//實例person類objperson.My();objperson.num();Student objstudent= new Student();//實例person類objstudent.My();objstudent.num();}public class Person //父類{public string My() {return "我是人類";}public virtual string num(){return "我人類沒有";}} public class Student:Person //子類{public override string num(){return "我學(xué)生沒有";}}
 

結(jié)果顯示:

?

二.什么時候用抽象方法?虛方法和抽象的區(qū)別

方法里邊沒有抽象體,不需要對其他事物進行描述,但是其他類都有這個行為,這個時候采用抽象方法。

里面沒有具體的方法體,? 繼承者,負(fù)責(zé)重寫里面的方法

抽象方法無法實例化,抽象類只能用作基類

1、Virtual方法(虛方法)

  virtual 關(guān)鍵字用于在基類中修飾方法。virtual的使用會有兩種情況:

  情況1:在父類中定義了virtual方法,但在子類中沒有重寫該虛方法。那么在對子類實例的調(diào)用中,該虛方法使用的是父類定義的方法

  情況2:在父類中定義了virtual方法,然后在子類中使用override重寫該方法。那么在對子類實例的調(diào)用中,該虛方法使用的是子類重寫的方法

2、Abstract方法(抽象方法)

abstract關(guān)鍵字只能用在抽象類中修飾方法,并且沒有具體的實現(xiàn)。抽象方法的實現(xiàn)必須在子類中使用override關(guān)鍵字來實現(xiàn)

接口和抽象類最本質(zhì)的區(qū)別:抽象類是一個不完全的類,是對對象的抽象,而接口是一種行為規(guī)范。

a)???? virtual修飾的方法必須有方法實現(xiàn)(哪怕只有一對大括號),abstract修飾的方法不能有實現(xiàn)。

b)??? virtual可以被子類重寫,abstract必須被子類重寫

c)???? 如果類中的某一函數(shù)被abstact修飾,則類名也必須用abstact修飾

d)??? Abstract修飾的類不能被創(chuàng)建實例。

e)???? C#中如果準(zhǔn)備在子類重寫父類的方法,則該方法在父類中必須用virtual修飾,在子類中必須用overide修飾,避免了程序員在子類中不小心重寫了父類父類方法。

注:用abstract修飾的類只能被繼承不能夠被實例化。

?

三.接口

class Program{static void Main(string[] args){Fly objfly=new Person(); //接口實例化 objfly.fly();objfly.run();objfly= new Student(); //接口實例化 objfly.fly();objfly.run();}public class Person:Fly //父類 {public string My() {return "我是人類";}public virtual string num(){return "我人類沒有";}string Fly.fly() //接口實現(xiàn)方法 {return "我是人類,我會飛";}string Fly.run() //接口實現(xiàn)方法 {return "我是人類,我在工作";}} public class Student:Person,Fly //子類 {public override string num(){return "我學(xué)生沒有";}string Fly.fly(){return "我是學(xué)生,我會飛";}string Fly.run(){return "我是學(xué)生,我在工作";}}public interface Fly{string fly();string run();}}

結(jié)果:

?

其中接口,和繼承接口的類實例化,可以做到多態(tài),以及替換,比如定義接口對象,可以初始化為任意繼承它的實體對象,而能使用的方法和屬性只有接口聲明的那些。

?

接口屬性定義使用

?

class Program{static void Main(string[] args){Fly objfly=new Person(); //接口實例化objfly.Age = 18;objfly.AgeNow();Console.WriteLine(objfly.Age.ToString());objfly= new Student(); //接口實例化objfly.Age = 10;objfly.AgeNow();Console.WriteLine(objfly.Age.ToString());}public class Person:Fly //父類 {public string My() {return "我是人類";}public virtual string num(){return "我人類沒有";}string Fly.fly() //接口實現(xiàn)方法 {return "我是人類,我會飛";}string Fly.run() //接口實現(xiàn)方法 {return "我是人類,我在工作";}int Fly.Age{get{return age;}set{age = value;}}void Fly.AgeNow(){Console.WriteLine("我是人類年齡:" + age);age = age + 1;}} public class Student:Person,Fly //子類 {public override string num(){return "我學(xué)生沒有";}string Fly.fly(){return "我是學(xué)生,我會飛";}string Fly.run(){return "我是學(xué)生,我在工作";}int Fly.Age{get{return age;}set{age = value;}}void Fly.AgeNow(){Console.WriteLine("我是學(xué)生年齡:" + age);age = age + 1;}}public interface Fly{int Age{get;set;}void AgeNow();string fly();string run();}}

?

最后結(jié)果:

?

轉(zhuǎn)載于:https://www.cnblogs.com/FHL007/p/11113699.html

總結(jié)

以上是生活随笔為你收集整理的C#多态性的小记,父类,子类,虚方法,接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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