最近在教学生时,学员老理解不清方法的隐藏和重写,后来想了想,终于能用反射能让学生明白这两者的区别!
看一下例子:
隐藏:

 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()。
重写:

方法的重写
 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           }

我们可以在上面的两种状态下来看一下结果,如下
隐藏方法如下图:

重写的方法如下图:

可见隐藏后是两个Method方法,重写后是一个Method方法。

转载于:https://www.cnblogs.com/axzxs2001/archive/2008/01/10/1034112.html

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

  1. php继承和重载区别,php继承中方法重载(覆盖)的应用场合

    php继承中方法重载(覆盖)的应用场合 发布于 2015-02-23 17:57:23 | 91 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  2. 解析java中方法的重载和重写之间的区别与联系

    解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...

  3. .net知识和学习方法系列(十五)类型,对象,堆栈和托管堆

    1.          类型,对象,堆栈和托管堆 C#的类型和对象在应用计算机内存时,大体用到两种内存,一个叫堆栈,另一个叫托管堆,下面我们用直角长方形来代表堆栈,用圆角长方形来代表托管堆.   首先 ...

  4. 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第1节 继承_7_继承中方法的覆盖重写_注意事项...

    创建一个父类 创建一个子类,并继承这个父类 父类总定义一个方法叫做method 子类中要想进行覆盖重写,也定义为相同的名称. 名称相同,参数列表相同.这种情况下就是发生了重写 子类的方法名称改成met ...

  5. Java 继承中的属性隐藏与方法重写

    一.变量隐藏--变量不具有多态性 Java 中的变量不遵循多态性,所以重写仅适用于方法,而不适用于变量. 并且,当子类中的实例变量与父类中的实例变量具有相同的名称时,则从引用类型中选择该实例变量. 在 ...

  6. python 多继承中方法的调用顺序

    python支持多继承,如果子类没有重写__init__()方法,则默认会调用父类的__init__()方法.如果重写了则不会调用父类的,但是可以通过super().__init__()显示调用. 这 ...

  7. java隐藏与覆盖_java中方法的隐藏和覆盖问题?

    ok()方法在继承时候发生覆盖(重写)了吗? 发生了.在子类B中的ok()方法拥有父类方法相同的方法名和参数列表(signature),所以在这里发生了重写.调用B类对象的ok()方法会print & ...

  8. .net知识和学习方法系列(十四)TraceListener的应用

    在前一往上一往篇文章中,我们用到一个TextWriterTraceListener,它是为监视跟踪和调试输出的侦听器,对于跟踪调试的监听器还有两个,分别是:DefaultTraceListener和E ...

  9. .net知识和学习方法系列(十七)CLR-CLR中的值类型和引用类型

    C#中有谈到两种类型,值类型和引用类型(其实是CLR支持两种类型). 值类型包括:简单类型(int ,double,long,bool,char等,string除外),struct,enum 引用类型 ...

最新文章

  1. 远程监督关系抽取漫谈:结合知识图谱和图神经网络
  2. Linux 安装 luarocks(lua的模块管理工具)
  3. 怎么可以用计算机弄出表白数字,怎么用数字表白 表白爱情数字大全
  4. SpringCloud SpringBoot 推荐
  5. 用Eclipse调试Java程序的一些小技巧
  6. []End of 2017OI
  7. insert into user mysql root_跳过授权表登录后使用insert into创建root权限用户
  8. Nifty File Lists for Mac(文件列表创建工具)
  9. 字符串第一个出现的单个字符_如何在不编写单个应用程序的情况下找到我的第一个开发人员工作
  10. vue-promise-axios
  11. http 请求 超时时间设置
  12. ABAQUS2018汉化
  13. 一篇文章带你深入了解Dart语言
  14. 多旋翼无人机构成及其原理详解
  15. Reflection in Java
  16. ARM探索之旅 | 二、ARM Cortex-M 用什么指令集?
  17. #定位系统性能瓶颈# sysdig
  18. 获取高匿代理ip的步骤思路
  19. LVS负载均衡DR模式安装和配置过程详解
  20. web漏洞扫描器-Burpsuite 常规测试

热门文章

  1. webworker应用场景_初始WebWorker
  2. 【CF gym 103260】40th Petrozavodsk Programming Camp, Day 5,2021.2.3 水题2题
  3. 【CCCC】L2-027 名人堂与代金券 (25分),模拟水题
  4. UVa10082 - WERTYU
  5. java流程控制结构不包括_以下各项中不属于Java语言流程控制结构的是()。
  6. python多个对象嵌套会有问题吗_Python列表嵌套常见坑点及解决方案
  7. JAVA数组、算法、递归
  8. 正则表达式 匹配点号_自动化关联篇JMeter(十)-正则表达式关联
  9. SQL Server高级查询之子查询(子查询非典型应用)
  10. Glad You Came--带条件的线段树区间更新,区间查询(其实是单点查询)