關於在C#中對類中的隱藏基類方法和重寫方法的理解


  最近在學習C#,在C#中的類看到重寫和隱藏基類的方法這些概念。才開始感覺自己不是很理解這些概念。也區分不開這些概念。通過自己的查找資料和練習后。慢慢的理解了類中的隱藏和重寫這個概念。在C#中只有在基類定義了一些虛方法才能在派生類中重寫基類中的虛方法。但是如果在派生類中使用隱藏方法,就不用在基類中定義虛方法。虛方法和重寫實現的功能感覺是差不多的。都是在派生類中改變了基類中的方法,但是兩者還是有質的區別,概念的性質也是不一樣的。
   重寫是指:將基類中的方法替換掉,也就是抹掉基類中的原有方法,在派生類中重新寫一種方法。當然重寫的這個新方法也會作用到基類中。聽着很抽象,但是看看代碼就知道了。

代碼如下:

 1 using System;
 2 namespace LHT
 3 {
 4     class a
 5     {
 6         public virtual void print()//虛方法,關鍵字為virtual
 7         {
 8             Console.WriteLine("這個是基類中的虛方法");
 9         }
10     }
11 
12     class b : a
13     {
14         public override void print()//重寫基類中的方法,關鍵字為override
15         {
16             Console.WriteLine("這個是派生類中的重寫方法");
17         }
18     }
19 
20     class c
21     {
22         static void Main()
23         {
24             a temp1 = new a();
25             b temp = new b();
26             temp.print();
27             temp.print();
28             Console.ReadKey();
29         }
30     }
31 }
View Code

結果如下:

這個是派生類中的重寫方法
這個是派生類中的重寫方法

隱藏是指將基類中的方法忽略掉,再在派生類中寫一個方法,這個方法只是在派生類中有效,並不會影響到基類(當然基類中的方法可以是普通的方法,也可以是虛擬的方法)。

代碼如下:

 1 using System;
 2 namespace lht
 3 {
 4     class a
 5     {
 6         public void print()//普通的方法
 7         {
 8             Console.WriteLine("這個是基類中方法");
 9         }
10     }
11     class b : a
12     {
13         new public void print()//隱藏基類的方法,在派生類中定義新的方法(關鍵字new)
14         {
15             Console.WriteLine("這個是派生類中的方法");
16         }
17     }
18     class c
19     {
20         static void Main()
21         {
22             b temp = new b();
23             a temp1 = new a();
24             temp.print();
25             temp1.print();
26             Console.ReadKey();
27         }
28     }
29 }
View Code

結果如下:

這個是派生類中的方法
這個是基類中方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM