差异: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有三种用法,实例化,泛型约束,派生类隐藏基类方法。

最新文章

  1. 无光驱在32位windows系统下安装64位windows系统
  2. 如何在ASP.NET 5上搭建基于TypeScript的Angular2项目
  3. 找到SQL Server数据库历史增长信息
  4. git代码回滚:Reset、Checkout、Revert的选择
  5. HIbernate的增删改
  6. MATLAB学习笔记(十)——MATLAB图形句柄
  7. 关于MFC库和CRT库冲突的分析
  8. CSS定位(CSS定位概述、相对定位、绝对定位、浮动)
  9. FileStream使用小记
  10. echshop 微信扫码支付 遇到的问题
  11. leetcode problem 42 -- Trapping Rain Water
  12. 用OxyPlot在WPF中演示正演磁异常的变化规律
  13. Web前端性能优化——如何提高页面加载速度
  14. hibernate中的缓存问题与快照机制
  15. MyEclipse中修改项目运行地址栏中项目名称
  16. Linux磁盘空间被未知资源耗尽
  17. Beamer 中的页面链接
  18. eclipse中使用workset整理项目
  19. Java异步、线程池解决方案
  20. VMware for mac inside error solutions

热门文章

  1. 设计模式21:State 状态模式(行为型模式)
  2. 编写高质量代码改善C#程序的157个建议——建议121:为应用程序设定运行权限
  3. CSS 学习-文本 段落
  4. [CSS]利用伪元素实现一些特殊图形 from baidu校招
  5. DATEADD和DATEDIFF
  6. 谈谈iOS开发如何写个人中心这类页面--静态tableView页面的编写
  7. 【题解】 UVa11729 Commando War
  8. python-数值类型转换
  9. OCP 052最新考试题库和答案收集-34
  10. alicemq 方便的RabbitMQ 可视化工具