2019.03.29 读书笔记 关于override与new
2024-08-24 18:02:46
差异:override:覆盖父类分方法,new 隐藏父类方法。
共同:都不能改变父类自身方法。
public class Test
{
public string Name { get; set; }
public virtual void SetName()
{
Console.WriteLine("parent");
}
}
public class Testchildren:Test
{
public override void SetName()
{
Console.WriteLine("children"); }
public void Set()
{
base.SetName();
}
}
static void Main(string[] args)
{ var a = new Testchildren();
a.SetName();
((Test)a).SetName();
a.Set();
Console.ReadKey();
}
//输出:children children parent
再看看new
public class Test
{
public string Name { get; set; }
public virtual void SetName()
{
Console.WriteLine("parent");
}
}
public class Testchildren:Test
{
public new void SetName()
{
Console.WriteLine("children"); }
public void Set()
{
base.SetName();
}
} static void Main(string[] args)
{ var a = new Testchildren();
a.SetName();
((Test)a).SetName();
a.Set();
Console.ReadKey();
}
//children parent parent
总结:调用内部base.set时,总是运行父类方法。override,外部调用set,总是运行子类set。new,外部调用set时,子类运行自己的set,隐式转换的父类也运行自己的set。
补充:那么new有三种用法,实例化,泛型约束,派生类隐藏基类方法。
最新文章
- 无光驱在32位windows系统下安装64位windows系统
- 如何在ASP.NET 5上搭建基于TypeScript的Angular2项目
- 找到SQL Server数据库历史增长信息
- git代码回滚:Reset、Checkout、Revert的选择
- HIbernate的增删改
- MATLAB学习笔记(十)——MATLAB图形句柄
- 关于MFC库和CRT库冲突的分析
- CSS定位(CSS定位概述、相对定位、绝对定位、浮动)
- FileStream使用小记
- echshop 微信扫码支付 遇到的问题
- leetcode problem 42 -- Trapping Rain Water
- 用OxyPlot在WPF中演示正演磁异常的变化规律
- Web前端性能优化——如何提高页面加载速度
- hibernate中的缓存问题与快照机制
- MyEclipse中修改项目运行地址栏中项目名称
- Linux磁盘空间被未知资源耗尽
- Beamer 中的页面链接
- eclipse中使用workset整理项目
- Java异步、线程池解决方案
- VMware for mac inside error solutions