最近在学习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