博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#隐藏和重写基类方法的异同
阅读量:5168 次
发布时间:2019-06-13

本文共 1293 字,大约阅读时间需要 4 分钟。

最近正在学习c#,对其中的方法重写和隐藏的概念很是模糊,现在将其归纳如下:

1:方法重写:就是在基类中的方法用virtual关键字来标识,然后在继承类中对该类进行重写(override),这样基类中的方法已经被重写了,已经失去了功能了。当让基类的对象的引用直接指向继承类的对象时(多态性),调用该方法则是调用的继承类的方法。

2:方法隐藏:无论基类中的方法是否用了virtual关键字,继承类中都可以用new关键字(如果不用new的话,不会产生错误,但会生成一个编译警告)将基类中的方法隐藏,所谓隐藏就是隐藏,不像重写,重写就是原来的(基类中)已经不存在了,而隐藏是原来的还存在。所以当让基类的对象的引用直接指向继承类的对象时(多态性),调用该方法则是调用的基类的方法。

代码如下:

1 public class BaseClass 2     { 3         public void functionA() 4         { 5             Console.WriteLine("BaseFunctionA http://www.cnblogs.com/sosoft/"); 6         } 7         public virtual void functionB() 8         { 9             Console.WriteLine("BaseFunctionB http://www.cnblogs.com/sosoft/");10         }11     }12    public class DerivedClass:BaseClass13     {14         public new void functionA()15         {16             Console.WriteLine("DerivedFunctionA http://www.cnblogs.com/sosoft/");17         }18         public override void functionB()19         {20             Console.WriteLine("DerivedFunctionB http://www.cnblogs.com/sosoft/");21         }22     }

当利用多态性执行下面代码时:

BaseClass baseFunction=new DerivedClass();baseFunction.functionA();baseFunction.functionB();

得到的结果是:

BaseFunctionA http://www.cnblogs.com/sosoft/

DerivedFunctionB http://www.cnblogs.com/sosoft/

 

 

 

开发技术文章:

转载于:https://www.cnblogs.com/sosoft/p/overridenew.html

你可能感兴趣的文章
vue实战(7):完整开发登录页面(一)
查看>>
Visual Studio自定义模板(二)
查看>>
【Mood-20】滴滤咖啡做法 IT工程师加班必备 更健康的coffee 项目经理加班密鉴
查看>>
读《构建之法-软件工程》第四章有感
查看>>
使用 Printf via SWO/SWV 输出调试信息
查看>>
.net 分布式架构之分布式锁实现(转)
查看>>
吴恩达机器学习笔记 —— 3 线性回归回顾
查看>>
Problem E: Automatic Editing
查看>>
SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
查看>>
《DSP using MATLAB》Problem 6.17
查看>>
微信公众平台开发实战Java版之如何网页授权获取用户基本信息
查看>>
一周TDD小结
查看>>
sizeof与strlen的用法
查看>>
Linux 下常见目录及其功能
查看>>
开源框架中常用的php函数
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>
4.AE中的缩放,书签
查看>>
CVE-2014-6321 && MS14-066 Microsoft Schannel Remote Code Execution Vulnerability Analysis
查看>>