.net知识和学习方法系列(四)继承中方法的隐藏和重写
最近在教学生时,学员老理解不清方法的隐藏和重写,后来想了想,终于能用反射能让学生明白这两者的区别!
看一下例子:
隐藏:
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![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
14
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
15
![](/Images/OutliningIndicators/None.gif)
类Class2中的Method()方法会隐藏掉Class1的Method()。
重写:
![](/Images/OutliningIndicators/ContractedBlock.gif)
其实引用下面代码即反射就能来看出方法的隐藏还是重写:
1
MemberInfo[] MI=typeof(Class2).GetMethods ();
2
foreach (MemberInfo mi in MI)
3
{
4
Console .WriteLine (mi.Name);
5
}
我们可以在上面的两种状态下来看一下结果,如下![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
隐藏方法如下图:
重写的方法如下图:
可见隐藏后是两个Method方法,重写后是一个Method方法。
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524