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

C# override重寫與new隱藏的區別

開發 后端
C# override重寫,是指對父類中的虛方法(標記virtual)或抽象方法(標記為abstract)進行重寫。本文介紹了C# override重寫與new隱藏的區別,供大家參考。

C#比java多一個new隱藏的功能。C# override重寫相當于java中沒有關鍵字的方法重寫。所以java中方法是沒有隱藏功能的。

C# override重寫,是指對父類中的虛方法(標記virtual)或抽象方法(標記為abstract)進行重寫,實現新的功能,它必須與父類方法的簽名完全一致,而且與父類方法的可訪問性也必須一致 new隱藏,是指在子類中重新定義一個簽名與父類的方法相同的方法,這個方法可以不用new修飾,只是編譯時會彈出一個警告信息:如果是有意隱藏,請使用關鍵字new。

  1. using System;     
  2. public class Test      
  3. {     
  4.     public static void Main(String[] args){     
  5.         A a=new B();      
  6.         Console.Write(a.getVal()); // 輸出:A 雖然實例是B,但是執行的卻是A的方法     
  7.     
  8.         a=new C();      
  9.         Console.Write(a.getVal()); // 輸出:C 實例是C,而且C重寫的A的方法,所以執行C的方法     
  10.     
  11.         B b=new B();      
  12.         Console.Write(b.getVal()); // 輸出:B 只有定義和實例都是B,才執行B的方法     
  13.     }      
  14. }     
  15. class A     
  16. {     
  17.     // 要允許子類重寫,方法必須標識為virtual 或 abstract     
  18.     public virtual String getVal(){      
  19.         return "A";      
  20.     }      
  21. }      
  22. class B : A     
  23. {     
  24.     // 隱藏父類方法 用new標識,不標識時會出現編譯警告,不影響使用     
  25.     public new String getVal(){      
  26.         return "B";      
  27.     }      
  28. }      
  29. class C : A     
  30. {     
  31.     // 重寫方法 必須用override標識     
  32.     public override String getVal(){      
  33.         return "C";      
  34.     }      
  35. }    

而在Java中,不存在隱藏父類方法這一概念,Java只有重寫方法這一概念,同樣的代碼,在Java中執行和C#中執行截然不同:

  1. class test     
  2. {     
  3.     public static void main(String[] args)     
  4.     {     
  5.         A a=new B();      
  6. // 輸出:B  實例是B,執行的也是B的方法(在C#中,此時應該輸出A)     
  7.         System.out.println(a.getVal());      
  8.          a=new A();      
  9. // 輸出:A 只有定義和實例都是A,才執行A的方法     
  10.         System.out.println(a.getVal());      
  11.     }     
  12. }     
  13. class A     
  14. {     
  15.     public String getVal(){      
  16.         return "A";      
  17.     }      
  18. }      
  19. class B extends A     
  20. {     
  21.     public String getVal(){      
  22.         return "B";      
  23.     }      
  24. }    

好了,C# override重寫與new隱藏的區別就介紹到這里。

【編輯推薦】

  1. 學習C#消息:循序漸進
  2. 解惑答疑:C#委托和事件
  3. 學習C#實現HTTP協議:多線程文件傳輸
  4. 進一步接觸C#委托與事件
  5. 淺析四種C#轉換的區別
責任編輯:book05 來源: cnblogs
相關推薦

2009-08-25 17:15:50

C#隱藏C#重寫C#重載

2009-08-21 14:22:22

C# new和over

2009-08-26 14:54:23

C# new和over

2025-02-13 09:32:12

C#重寫override

2009-08-24 17:45:39

Java與C#的區別

2009-08-18 12:23:38

2009-08-13 17:30:30

C#構造函數

2009-08-27 11:21:36

C# override

2009-09-01 16:19:57

C# new()約束

2017-09-30 09:10:21

Java重寫變量

2009-09-04 11:35:05

C#方法重寫

2009-08-31 09:19:31

c#隱藏窗口

2020-02-28 09:00:00

ObjectC#編程語言

2011-05-24 16:46:48

mallocfreenew

2011-06-02 13:28:17

OverloadOverride

2009-08-11 14:16:38

C# New運算符

2009-08-27 13:06:13

C# new修飾符

2011-06-14 12:27:38

C#C++

2013-05-23 17:21:16

C#

2010-07-12 09:07:30

C#
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品99 | 三级成人片 | 精品成人av| 精品一区在线 | h视频免费在线观看 | 久久99精品久久久久久 | 中文字幕视频一区 | 天天天操| 新av在线| 在线观看中文字幕亚洲 | 国产高清免费在线 | 日韩在线免费视频 | 亚洲精品女优 | av手机在线播放 | а√中文在线8 | 麻豆久久精品 | 欧美精品片 | 久久久久网站 | 亚洲一区二区三区在线视频 | www.久久.com | 超碰在线人 | av一级一片| 日韩在线国产精品 | 久久国产精品免费一区二区三区 | 久久精品久久久 | 欧美 中文字幕 | 欧美99久久精品乱码影视 | www.yw193.com| 午夜精品一区二区三区免费视频 | 国产在线观看av | 亚洲综合一区二区三区 | 亚洲另类春色偷拍在线观看 | 久久久久久久国产 | 日韩二三区 | 日本精品视频一区二区三区四区 | 欧美日韩国产精品一区 | 亚洲成人精品国产 | www.亚洲成人网 | 国产精品久久av | 中文字幕啪啪 | 国产精品久久久久久久免费观看 |