成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談接口、抽象類、抽象方法和虛方法的區(qū)別

開發(fā) 后端
本文主要介紹的了接口、抽象類、抽象方法和虛方法的區(qū)別,結(jié)合實(shí)際例子,為大家清楚的介紹了。希望對大家有幫助,一起來看。

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

首先說一下接口與抽象類的異同:

相同點(diǎn):

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

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

不同點(diǎn):

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

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

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

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

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

接下來是抽象方法和虛方法的異同:

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

相同點(diǎn):

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

不同點(diǎn)

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

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

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

 

  1. /// <summary>  
  2. /// 一個(gè)手機(jī)的抽象類  
  3. /// </summary>  
  4. public abstract class Mobilephone   
  5. {  
  6. private string _logo;  
  7. public string Logo  
  8. {  
  9. get { return _logo; }  
  10. set { _logo = value; }  
  11. }  
  12. public abstract void Call();  
  13. public virtual void Callagain()   
  14. {  
  15. Console.WriteLine("我再打一個(gè)電話");  
  16. }  
  17. }  
  18. /// <summary>  
  19. /// 定義一個(gè)實(shí)體類,繼承了一個(gè)抽象類及多個(gè)接口  
  20. /// </summary>  
  21. public class Nokia :Mobilephone,IClock,Ilistenmusic  
  22. {  
  23. public override void Call()  
  24. {  
  25. Console.WriteLine("NOKIA打電話沒問題");  
  26. }  
  27. public void clock()  
  28. {  
  29. Console.WriteLine("NOKIA的手機(jī)也有鬧鐘功能");  
  30. }  
  31. public void listenmusic()  
  32. {  
  33. Console.WriteLine("NOKIA的手機(jī)還能聽歌");  
  34. }  
  35. public override void Callagain()   
  36. {  
  37. Console.WriteLine("算了,還是不打了");  
  38. }  
  39. }  
  40. /// <summary>  
  41. /// 下面定義了兩個(gè)接口,為了說明可以繼承多個(gè)接口  
  42. /// </summary>  
  43. public interface Ilistenmusic   
  44. {  
  45. void listenmusic();  
  46. }  
  47. public interface IClock   
  48. {  
  49. void clock();  
  50. }  

 

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

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

 

  1. class Program   
  2. {   
  3. static void Main(string[] args)   
  4. {   
  5. B5 b5 = new B5();   
  6. b5.MethodB();   
  7. }   
  8. }   
  9. public class A5   
  10. {   
  11. public virtual void MethodA()   
  12. {   
  13. Console.WriteLine("A5.MethodA");   
  14. Console.Read();   
  15. }   
  16. public virtual void MethodB()   
  17. {   
  18. MethodA();   
  19. }   
  20. }   
  21. public class B5 :A5   
  22. {   
  23. public new void MethodA()   
  24. {   
  25. Console.WriteLine("B5.MethodA");   
  26. Console.ReadLine();   
  27. }   
  28. }   
  29. class Program  
  30. {  
  31. static void Main(string[] args)  
  32. {  
  33. B5 b5 = new B5();  
  34. b5.MethodB();  
  35. }  
  36. }  
  37. public class A5  
  38. {  
  39. public virtual void MethodA()  
  40. {  
  41. Console.WriteLine("A5.MethodA");  
  42. Console.Read();  
  43. }  
  44. public virtual void MethodB()  
  45. {  
  46. MethodA();  
  47. }  
  48. }  
  49. public class B5 :A5  
  50. {  
  51. public new void MethodA()   
  52. {  
  53. Console.WriteLine("B5.MethodA");  
  54. Console.ReadLine();  
  55. }  
  56. }  

 

***的答案是:"A5.MethodA"

【編輯推薦】

  1. 分享c#常用函數(shù)和方法集
  2. c#.net實(shí)體類序列化方法
  3. C#中的閉包是怎么捕獲變量的
  4. 解析C#委托、時(shí)間和Lambda表達(dá)式
  5. 用C#實(shí)現(xiàn)HTTP協(xié)議下的多線程文件傳輸
責(zé)任編輯:于鐵 來源: 超級兔子
相關(guān)推薦

2009-08-10 10:04:25

C#抽象類C#接口

2009-04-30 15:15:01

Java抽象類接口

2011-07-12 15:58:48

java抽象類接口

2011-07-06 10:33:31

C#

2011-05-19 18:01:56

JAVA

2009-06-14 21:31:29

Java抽象類Java接口

2009-06-16 11:30:00

Java抽象類Java接口

2011-12-22 10:48:21

Java

2011-07-10 14:07:59

JAVA

2022-04-06 09:10:03

抽象類型普通類型Swift

2012-02-29 09:32:01

Java

2010-03-04 09:40:04

Java接口抽象類

2021-12-23 07:11:31

開發(fā)

2020-10-19 13:03:16

Java 8接口抽象類

2009-07-30 18:36:00

C#接口C#抽象類

2015-03-23 09:33:43

Java抽象類Java接口Java

2009-08-14 15:54:17

C#接口和抽象類

2010-07-06 08:58:52

UML圖表達(dá)C++

2009-08-03 18:12:31

C#抽象類

2023-09-07 13:24:00

C++編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 99爱国产| 国产一区欧美 | 日韩免费高清视频 | 欧美大片在线观看 | 在线看av网址 | 韩日av在线 | 久久国产一区二区 | 韩国主播午夜大尺度福利 | 国产 日韩 欧美 在线 | 一区二区免费在线视频 | 成人永久免费视频 | 国产精品一区二区三区在线 | 四虎永久免费黄色影片 | 午夜欧美 | 欧美国产视频 | 欧美一级毛片免费观看 | 91九色视频在线 | www.888www看片 | 久久国产精品视频 | 亚洲日本一区二区三区四区 | 丁香五月缴情综合网 | 国产伦一区二区三区四区 | 中文字幕日韩专区 | 毛片的网址 | 亚洲欧美一区二区在线观看 | 日韩不卡一区二区三区 | 亚洲第一天堂无码专区 | 久久亚洲精品国产精品紫薇 | 国产精品69久久久久水密桃 | 视频一区中文字幕 | 国产日韩精品在线 | 国产露脸国语对白在线 | 国产成人一区二区三区久久久 | 一区二区三区视频在线观看 | 日本在线精品视频 | 日日骚av| www.久 | 欧美国产91 | 国产激情视频在线观看 | 毛片毛片毛片毛片毛片 | 国产精品成人一区二区三区吃奶 |