C#中的隐藏方法
在C#中要重写基类的方法,C#提倡在基类中使用virtual来标记要被重写的方法,在子类也就是派生类中用voerride关键字来修饰重写的方法。
如果要是项目中前期考虑不足,我没有在基类(ClassA)中写入Amethod方法,但是派生类(ClassB)中由于需求早早的写完了Amethod方法,并且又有许多类(ClassC,ClassD..)又继承了派生类(ClassB),并且重写了Amethod方法。当这个时候我又想往最初的基类中(ClassA)添加Amethod方法,这就是存在一个潜在的错误,C#语法会在程序编译的时候提示出警告,需要给派生类(ClassB)重写的方法添加一个关键字“New”,以表示它会隐藏基类中的Amethod方法。
为什么在java中就不需要这么麻烦呢?java如果不base.Amethod就认为调用最新的子类中的重写方法。
那是因为在java中,所有的函数都是虚拟的,可被重写的。这无疑降低了性能。
看代码理解:
public class People
{
public People()
{
Console.WriteLine("father' custor");
}
public void Eat()
{
Console.WriteLine("father eat");
}
}
class Man : People
{
private int age;
public int Age
{
get
{
Console.WriteLine("age get");
return age;
}
set
{
Console.WriteLine("age set = ",value);
age = value;
}
}
public Man()
{
Console.WriteLine("son's custor");
}
public void WhoEat()
{
base.Eat();
} public new void Eat()
{
base.Eat();
Console.WriteLine("son eat!");
}
} class Children :Man
{
public new void Eat() { Console.WriteLine("children eat!"); }
}
C#中的隐藏方法的更多相关文章
- 关于在C#中对类中的隐藏基类方法和重写方法的理解
最近在学习C#,在C#中的类看到重写和隐藏基类的方法这些概念.才开始感觉自己不是很理解这些概念.也区分不开这些概念.通过自己的查找资料和练习后.慢慢的理解了类中的隐藏和重写这个概念.在C#中只有在基类 ...
- 实现继承+接口继承+虚方法+隐藏方法+this/base+抽象类+密封类/方法+修饰符
概念: 在上一节课中学习了如何定义类,用类当做模板来声明我们的数据. 很多类中有相似的数据,比如在一个游戏中,有Boss类,小怪类Enemy,这些类他们有很多相同的属性,也有不同的,这个时候我们可以使 ...
- c#中的重写方法与隐藏方
1.父类中有方法a,添加virtua修饰符可声明为虚方法,在子类中可以用override声明后重写方法a. 2.父类中有方法a,在子类中可以有new修饰符声明后隐藏父类方法. 子类重写方法后,对于子类 ...
- jquery中使元素显示和隐藏方法之间的区别
在实际的项目开发中,要使一个元素隐藏的方法有很多,比如css的多种属性和jquery的多种方法,虽然他们的作用都是使元素不可见,但是各个方法实现的原理是不一样的.下面主要介绍jquery各个元素隐藏方 ...
- 在ChemDraw中一键隐藏所有氢原子的方法
在常见的化学结构中氢原子是非常常见的一种原子,而且在很多的结构中氢原子的数量是非常的多的.因此我们在使用ChemDraw化学绘图软件绘制化学结构的过程中,发现有的时候氢原子数量过多会影响到整体结构的美 ...
- 如何在Java中避免equals方法的隐藏陷阱
摘要 本文描述重载equals方法的技术,这种技术即使是具现类的子类增加了字段也能保证equal语义的正确性. 在<Effective Java>的第8项中,Josh Bloch描述了当继 ...
- Delphi 中同类型方法的说明
对象的方法能定义成静态(static).虚拟(virtual).动态(dynamic)或消息处理(message).请看下面 的例子: TFoo = class procedure IAmAStati ...
- vector中的erase方法[转+补充]
注释如下: iterator erase(iterator it); // 删除指定元素,并返回删除元素后一个元素的位置(如果无元素,返回end())iterator erase(iter ...
- 父<IFRAME>获取子页属性以及子页中<IFRAME>的方法
例子如下: 1.父页index.jsp <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "ht ...
随机推荐
- Bash 文件夹操作
mkdir, rm,find都是对tree结构的文件夹进行的操作,可以安装tree用tree命令直接打印出树的结构 文件夹的操作分为只操作当前文件夹的集合数据和迭代操作的tree数据 Bash迭代当前 ...
- WebBrowser(超文本浏览框)控件默认使用IE9,IE10的方法
C#和易语言都可以使用该方法来变更默认的的IE版本 该文是通过修改注册表的方法实现,测试的时候发现易语言本身也是采用的这种方法 操作方法 打开注册表 HKEY_LOCAL_MACHINE (or HK ...
- UVA 624 CD【01背包+路径记录】
You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music is o ...
- quailty's Contest #1 道路修建 EXT(启发式合并)
题目链接 道路修建 EXT 考虑并查集的启发式合并,合并的时候小的子树的根成为大的子树的根的儿子. 可以证明这样整棵树的深度不会超过$logn$. 两个根合并的时候,产生的新的边的边权为当前的时间. ...
- Extract - <<凤凰牌老熊-现代支付系统设计>>
本文摘录自: http://blog.lixf.cn/essay/2017/04/01/concept-01-overview/ 一.支付概述-- 1. 支付与交易 交易过程: 交易的存在是支付发生的 ...
- 关于Date数据类型格式化的转换
例如: jsp页面读取数据库中日期格式的列时可能显示为1988-05-03 00:00:00 格式,但是我们不想要后面的00:00:00时间,只想要前面的年月日,那么该如何做出修改呢? 方法一:我 ...
- [Python Cookbook] Pandas: 3 Ways to define a DataFrame
Using Series (Row-Wise) import pandas as pd purchase_1 = pd.Series({'Name': 'Chris', 'Item Purchased ...
- BZOJ2038 [2009国家集训队]小Z的袜子(hose)(莫队算法)
神奇的莫队算法,用来解决可离线无修改的区间查询问题: 首先对原序列进行分块,√n块每块√n个: 然后对所有查询的区间[l,r]进行排序,首先按l所在的块序号升序排序,如果一样就按r升序排序: 最后就按 ...
- 使用canvas制作的移动端color picker
使用canvas制作的移动端color picker 项目演示地址(用手机或者手机模式打开) 我在另一个中demo,需要用到color picker,但是找不到我需要的移动端color picker, ...
- Nand 的几个名词:oob,bbt,ecc
转:http://blog.csdn.net/lanmanck/article/details/4230904 例如Samsung K9F1208U0B,数据存储容量为64MB,采用块页式存储管理.8 ...