日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C#override重寫與new隱藏的區(qū)別

C#比java多一個(gè)new隱藏的功能。C# override重寫相當(dāng)于java中沒有關(guān)鍵字的方法重寫。所以java中方法是沒有隱藏功能的。

目前成都創(chuàng)新互聯(lián)公司已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、汝南網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

C# override重寫,是指對(duì)父類中的虛方法(標(biāo)記virtual)或抽象方法(標(biāo)記為abstract)進(jìn)行重寫,實(shí)現(xiàn)新的功能,它必須與父類方法的簽名完全一致,而且與父類方法的可訪問性也必須一致 new隱藏,是指在子類中重新定義一個(gè)簽名與父類的方法相同的方法,這個(gè)方法可以不用new修飾,只是編譯時(shí)會(huì)彈出一個(gè)警告信息:如果是有意隱藏,請(qǐng)使用關(guān)鍵字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 雖然實(shí)例是B,但是執(zhí)行的卻是A的方法     
  7.     
  8.         a=new C();      
  9.         Console.Write(a.getVal()); // 輸出:C 實(shí)例是C,而且C重寫的A的方法,所以執(zhí)行C的方法     
  10.     
  11.         B b=new B();      
  12.         Console.Write(b.getVal()); // 輸出:B 只有定義和實(shí)例都是B,才執(zhí)行B的方法     
  13.     }      
  14. }     
  15. class A     
  16. {     
  17.     // 要允許子類重寫,方法必須標(biāo)識(shí)為virtual 或 abstract     
  18.     public virtual String getVal(){      
  19.         return "A";      
  20.     }      
  21. }      
  22. class B : A     
  23. {     
  24.     // 隱藏父類方法 用new標(biāo)識(shí),不標(biāo)識(shí)時(shí)會(huì)出現(xiàn)編譯警告,不影響使用     
  25.     public new String getVal(){      
  26.         return "B";      
  27.     }      
  28. }      
  29. class C : A     
  30. {     
  31.     // 重寫方法 必須用override標(biāo)識(shí)     
  32.     public override String getVal(){      
  33.         return "C";      
  34.     }      
  35. }    

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

 
 
 
  1. class test     
  2. {     
  3.     public static void main(String[] args)     
  4.     {     
  5.         A a=new B();      
  6. // 輸出:B  實(shí)例是B,執(zhí)行的也是B的方法(在C#中,此時(shí)應(yīng)該輸出A)     
  7.         System.out.println(a.getVal());      
  8.          a=new A();      
  9. // 輸出:A 只有定義和實(shí)例都是A,才執(zhí)行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隱藏的區(qū)別就介紹到這里。

【編輯推薦】

  1. 學(xué)習(xí)C#消息:循序漸進(jìn)
  2. 解惑答疑:C#委托和事件
  3. 學(xué)習(xí)C#實(shí)現(xiàn)HTTP協(xié)議:多線程文件傳輸
  4. 進(jìn)一步接觸C#委托與事件
  5. 淺析四種C#轉(zhuǎn)換的區(qū)別

文章名稱:C#override重寫與new隱藏的區(qū)別
文章路徑:http://m.5511xx.com/article/copdgog.html