C# new,override的理解和新发现
#第一篇博客 新发现是一个问题写在后面,希望大神解答
刚刚开始学习C#,对new和override的作用产生混淆,
通过这两篇文章的,产生了一下理解:
http://www.cnblogs.com/jason_yjau/archive/2009/08/25/1553949.html
https://www.baidu.com/link?url=s8CzgLqrcc8rgyXChjUL_mvSLjKctGGbuDgeaDwcbBnAenL5pQBxqSCnlujkGxWix4BijntUDIIizrVUrFUMr6NQgzqQBVljwAhDkmnTOle&wd=&eqid=dda53b470007dd80000000065c076fae
New作为修饰符的作用,用来隐藏和派生类方法同名的基类方法。
Override主要用来对abstract类或基类的方法和虚方法进行重写。
如:飞禽 bird = new 麻雀();
那么飞禽就是申明类,麻雀是实例类。
.检查顺序 :
→先检查申明类
→检查到是否虚拟方法,是的话
→转去检查实例类,看有没有有重载的
→有重载执行实例类中的重载方法;没有重载(有父类的话还会往上找,父类找到重载方法,就执行),就执行声明类的方法
新发现:在父类不是虚方法的情况下,子类方法用new修饰没有写public(即private)时,优先调用父类的方法
为什么呢???(可能和private的机制有关?)望大神解答一下
代码如下,输出的结果是father(把子类doit方法加上public,就会输出son)
class Father{
public void doit() {
Console.WriteLine("father");
}
}
class Son : Father
{
// public new void doit() { // 输出son
new void doit() { // 输出father
Console.WriteLine("son");
}
}
class Test{
static void Main()
{
Son sonA = new Son();
sonA.doit();
Console.ReadLine();
}
}
C# new,override的理解和新发现相关推荐
- 重载(Overload )和覆写(override)的理解及区别
(因为看书时没有理解它们,今天看msdn的webcast感觉很易懂,就记了下来) 重载Overload特点(两必须一可以) public bool withdraw(double amt, strin ...
- 【原创】C# Sealed、new、virtual、abstract、override的理解
1.sealed 密封类不能被继承,密封方法可以重写基类中的方法,但其本身不能在任何派生类(子类)中 进一步重写.当应用于属性或者方法时,sealed 修饰符必须始终和override一同使用. 通俗 ...
- 《.NET程序员面试秘笈》----面试题8 方法的重载和override有什么区别
本节书摘来自异步社区<.NET程序员面试秘笈>一书中的第1章,面试题8,作者: 张云翯, 更多章节内容可以访问云栖社区"异步社区"公众号查看. 面试题8 方法的重载和o ...
- java @override是什么意思
@Override简单理解就是这个句话下边的方法是继承父类的方法,对其覆盖 Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载Overload表示同一个类中可以有多个名称相 ...
- 自定义注解加AOP怎么玩?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 乱敲代码 来源 | 公众号「乱敲代码」 前言 ...
- Android studio学习(一)
研究一下 // Tencent is pleased to support the open source community by making ncnn available. // // Copy ...
- 科学领域中的深度学习一览
深度学习在很多商业应用中取得了前所未有的成功.大约十年以前,很少有从业者可以预测到深度学习驱动的系统可以在计算机视觉和语音识别领域超过人类水平.在劳伦斯伯克利国家实验室(LBNL)里,我们面临着科学领 ...
- 利用android实现计时组件
设想一下我们来实现一个这样的功能:里面有三个按钮(开始计时,停止计时,重置)点击开始按钮,计时组件开始计时,点击停止计时,计时停止,点击重置,计时停止,且计时组件归0,其中我们还可以增加一个时间限制按 ...
- 面向对象编程(Java)
包 包 (package) 是组织类的一种方式. 使用包的主要目的是保证类的唯一性 导入包中的类 Java 中已经提供了很多现成的类供我们使用. 例如 public class Test {publi ...
最新文章
- 2021全国高校计算机能力挑战赛(初赛)C语言试题四
- 反编译工具dnspy的安装与使用;
- my current journal index is in q3
- PendingIntent与Intent的区别
- leetcode892. 三维形体的表面积
- [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)...
- [bzoj2127]happiness
- 干活的不如写ppt的吗_干活不如写PPT 这话太真实
- 抓到的一次suse11 xen用libvirt连接的错误
- 读书笔记——计算机组成原理
- a - 数据结构实验之串一:kmp简单应用_数据结构(C语言版)_笔记_3
- C# 每天温习一点(IEnumerableTSource)
- 房屋租赁管理系统 基于SSM框架
- 虚拟机如何安装Deepin系统
- 压缩word的简单方法看这里
- 56ip数字标牌软件
- 某音init_gorgon(),x-gorgon分析和数据的获取(3)
- 如何选择适合你的兴趣爱好(六),钢琴
- 2020.11.10课堂笔记(Apache Spark 分布式计算原理)
- 怎么减少if()---else操作,优化代码