最近在學習C#,在C#中的類看到重寫和隱藏基類的方法這些概念。纔開始感受本身不是很理解這些概念。也區分不開這些概念。經過本身的查找資料和練習後。慢慢的理解了類中的隱藏和重寫這個概念。在C#中只有在基類定義了一些虛方法才能在派生類中重寫基類中的虛方法。可是若是在派生類中使用隱藏方法,就不用在基類中定義虛方法。虛方法和重寫實現的功能感受是差很少的。都是在派生類中改變了基類中的方法,可是二者仍是有質的區別,概念的性質也是不同的。
重寫是指:將基類中的方法替換掉,也就是抹掉基類中的原有方法,在派生類中從新寫一種方法。固然重寫的這個新方法也會做用到基類中。聽着很抽象,可是看看代碼就知道了。ide
代碼以下:學習
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 }
結果以下:spa
這個是派生類中的重寫方法
這個是派生類中的重寫方法code
隱藏是指將基類中的方法忽略掉,再在派生類中寫一個方法,這個方法只是在派生類中有效,並不會影響到基類(固然基類中的方法能夠是普通的方法,也能夠是虛擬的方法)。blog
代碼以下:it
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 }
結果以下:event
這個是派生類中的方法
這個是基類中方法class