且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

.net知识和学习方法系列(四)继承中方法的隐藏和重写

更新时间:2022-10-01 21:46:30

最近在教学生时,学员老理解不清方法的隐藏和重写,后来想了想,终于能用反射能让学生明白这两者的区别!
看一下例子:
隐藏:
1        class Class1 
2        { 
3                public void Method() 
4                {    
5                 
6                } 
7        } 
8        class Class2 : Class1 
9        { 
10                public new void Method() 
11                {    
12                 
13                } 
14        } 
15
 
类Class2中的Method()方法会隐藏掉Class1的Method()。
重写:
.net知识和学习方法系列(四)继承中方法的隐藏和重写方法的重写
类Class2中的Method()方法会隐藏掉Class1的Method()。
重写:
 
方法的重写 
1    class Class1 
2        { 
3                public virtual    void Method() 
4                {    
5                 
6                } 
7        } 
8        class Class2 : Class1 
9        { 
10                public override    void Method() 
11                {    
12                 
13                } 
14        } 
15
在上面的代码中,对于初学者可能理解不了什么是隐藏,什么是重写,因为在实例化这两个类后,调用它们的方法时,都只是Class2中Method()的方法在执行,怎么能看出来呢?
其实引用下面代码即反射就能来看出方法的隐藏还是重写:
1                     MemberInfo[] MI=typeof(Class2).GetMethods (); 
2                     foreach (MemberInfo mi in MI) 
3                     { 
4                         Console .WriteLine (mi.Name); 
5                     }
我们可以在上面的两种状态下来看一下结果,如下
隐藏方法如下图:
.net知识和学习方法系列(四)继承中方法的隐藏和重写
重写的方法如下图:
.net知识和学习方法系列(四)继承中方法的隐藏和重写
可见隐藏后是两个Method方法,重写后是一个Method方法。



















本文转自桂素伟51CTO博客,原文链接:http://blog.51cto.com/axzxs/149995 ,如需转载请自行联系原作者