欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C#接口、抽象類、抽象方法和虛方法的區(qū)別是什么

C#接口、抽象類、抽象方法和虛方法的區(qū)別是什么,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

創(chuàng)新互聯(lián)公司長(zhǎng)期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為岢嵐企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè),岢嵐網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

C#抽象類接口孩子間在對(duì)于抽象類定義的支持方面具有很大的相似性,甚至可以相互替換,因此很多開發(fā)者在進(jìn)行抽象類定義時(shí)對(duì)于抽象類和接口的選擇顯得比較隨意。其實(shí),兩者之間還是有很大區(qū)別的。

首先說(shuō)一下接口與抽象類的異同:

相同點(diǎn):

1.他們都不能實(shí)例化自己,也就是說(shuō)都是用來(lái)被繼承的。

2.抽象類中的抽象方法和接口方法一樣,都不能有方法體

不同點(diǎn):

1.抽象類里可以有字段,接口中不能有字段.

2.抽象類中的普通方法可以有方法體,而接口方法沒有方法體。

3.接口中的方法不能有訪問(wèn)修飾符,抽象類中的抽象方法被繼承,需要override重寫 .

4.接口更像是一種規(guī)范,一種約束。

5.一個(gè)子類只能繼承一個(gè)抽象類,但卻可以繼承多個(gè)接口。

接下來(lái)是抽象方法和虛方法的異同:

其實(shí)可以把抽象方法看做是沒有方法體的虛方法。

相同點(diǎn):

1.抽象方法和虛方法都可以被重寫。

不同點(diǎn)

1.abstract 和virtual的關(guān)鍵字不同

2.抽象方法一定沒有方法體,而虛方法可以有方法體。

下面寫個(gè)例子說(shuō)明一下:

/// <summary>  /// 一個(gè)手機(jī)的抽象類  /// </summary>  public abstract class Mobilephone   {  private string _logo;  public string Logo  {  get { return _logo; }  set { _logo = value; }  }  public abstract void Call();  public virtual void Callagain()   {  Console.WriteLine("我再打一個(gè)電話");  }  }  /// <summary>  /// 定義一個(gè)實(shí)體類,繼承了一個(gè)抽象類及多個(gè)接口  /// </summary>  public class Nokia :Mobilephone,IClock,Ilistenmusic  {  public override void Call()  {  Console.WriteLine("NOKIA打電話沒問(wèn)題");  }  public void clock()  {  Console.WriteLine("NOKIA的手機(jī)也有鬧鐘功能");  }  public void listenmusic()  {  Console.WriteLine("NOKIA的手機(jī)還能聽歌");  }  public override void Callagain()   {  Console.WriteLine("算了,還是不打了");  }  }  /// <summary>  /// 下面定義了兩個(gè)接口,為了說(shuō)明可以繼承多個(gè)接口  /// </summary>  public interface Ilistenmusic   {  void listenmusic();  }  public interface IClock   {  void clock();  }

在補(bǔ)充一個(gè)小例子,

這里有到很有意思的面試題,說(shuō)名了new關(guān)鍵字和override的區(qū)別:

class Program   {   static void Main(string[] args)   {   B5 b5 = new B5();   b5.MethodB();   }   }   public class A5   {   public virtual void MethodA()   {   Console.WriteLine("A5.MethodA");   Console.Read();   }   public virtual void MethodB()   {   MethodA();   }   }   public class B5 :A5   {   public new void MethodA()   {   Console.WriteLine("B5.MethodA");   Console.ReadLine();   }   }   class Program  {  static void Main(string[] args)  {  B5 b5 = new B5();  b5.MethodB();  }  }  public class A5  {  public virtual void MethodA()  {  Console.WriteLine("A5.MethodA");  Console.Read();  }  public virtual void MethodB()  {  MethodA();  }  }  public class B5 :A5  {  public new void MethodA()   {  Console.WriteLine("B5.MethodA");  Console.ReadLine();  }  }

最后的答案是:"A5.MethodA"

看完上述內(nèi)容,你們掌握C#接口、抽象類、抽象方法和虛方法的區(qū)別是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

本文名稱:C#接口、抽象類、抽象方法和虛方法的區(qū)別是什么
本文網(wǎng)址:http://chinadenli.net/article16/jhjhdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)網(wǎng)站收錄移動(dòng)網(wǎng)站建設(shè)App設(shè)計(jì)網(wǎng)站設(shè)計(jì)公司響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管