new关键字对类成员的阻断

 

昨天终于对new关键字对类成员的阻断作用有了比较清晰的认识,“对类成员的阻断”是王涛大哥在其作品《你必须知道的.NET》的说法,昨天在园里看到一位前辈戏称之为“封印咒术”,我感觉这个说法很贴切。比如Sons类继承自Fathers类,在Sons中对Fathers的虚方法DoVirtualWork()实现了封印,则以后继承自Sons的类就无法继承Fathers的DoVirtualWork()方法。代码如下:

ContractedBlock.gifExpandedBlockStart.gifCode
    public class Fathers
    {
        
public void DoWork()
        {
            Console.WriteLine(
"Father.DoWork()");
        }

        
public virtual void DoVirtualWork()
        {
            Console.WriteLine(
"Father.DoVirtualWork()");
        }
    }

    
public class Sons : Fathers
    {
       
public new void DoVirtualWork()
        {
            
//base.DoVirtualWork();
            Console.WriteLine("Son.DoVirtualWork()");
        }

      }

    
public class Grandsons : Sons
    {
        
     }

    
public class Sonson : Sons
    {
        
    }
    
class Program
    {
        
static void Main(string[] args)
        {
            
//调用Sons.DoVirtualWork()         
            Sons person1 = new Grandsons();
            person1.DoVirtualWork();
            
//调用Sons.DoVirtualWork()
            Sons person2 = new Sons();
            person2.DoVirtualWork();
            
//调用Fathers.DoVirtualWork()
            Fathers person = new Grandsons();
            person.DoVirtualWork();
            
//调用Fathers.DoVirtualWork()
            Fathers person3 = new Sonson();
            person3.DoVirtualWork();
            
//调用Sons.DoVirtualWork()
            Sonson person4 = new Sonson();
            person4.DoVirtualWork();
            Console.Read();
        }
    }

 

运行结果:

Son.DoVirtualWork()
Son.DoVirtualWork()
Father.DoVirtualWork()
Father.DoVirtualWork()
Son.DoVirtualWork()

所以,在类的设计中尽可能不用new阻断类成员。

 

转载于:https://www.cnblogs.com/happyjinyalei/archive/2009/02/26/1398080.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LOJ 2979 「THUSCH 2017」换桌——多路增广费用流

题目:https://loj.ac/problem/2979 原来的思路: 优化连边。一看就是同一个桌子相邻座位之间连边、相邻桌子对应座位之间连边。 每个座位向它所属的桌子连边。然后每个人建一个点,向若干桌子连边。 因为连边的桌子是区间,所以线段树…

java如何实现红包雨,一个简单的红包雨实现

效果图如下:我的视频 1_20170207191503.gif这个简单动画的主要思路: 将多个 红包View 通过 属性动画 从屏幕顶端 飘落到 屏幕底部。只不过在飘落的动画过程中,加入了一些随机路线 Path。主要涉及到的知识点:1.Path 和 PathMeasure…

【原】基于Windows Media Player, 写自己的播放器【有源码,可下载整个工程】

最近有客户问我,怎么把Windows Media Player 嵌套在自己的项目中。 以前我在Delphi下玩过Windows Media Player,可是在Microsoft Visual Studio 2008 没有测试过。 到网上搜索了一把,果然得到很多例子。 其中CSDN上有个例子写的不错&#xff…

Oracle数据库php短连接,PHP 连接 Oracle

起因由于项目的数据库需要用客户购买的Oracle数据库,所以需要php安装oci扩展。运行环境php : 7.2系统: windows10oracle: 11gR2安装相关环境由于php的oci8扩展还是需要使用到oracle的一些包,所以先下载这一些。下载完成后解压缩这个压缩包,并…

计算机考研文章精选[转载]

今天在网上看到了一篇超全的计算机考研文章集合,里面有很多曾经看过,挺经典的,于是忍不住收藏下来,希望对那些即将报考计算机研究生和工作了仍不放弃考研的朋友有所帮助 计算机考研常见问题解答 地址:http://ww…

PHP鼠标滑过变色命令,WordPress鼠标悬停变色的修改方法

原创内容,转载请注明出处:https://www.myzhenai.com.cn/post/3253.html关键词:wordpress 鼠标 悬停 变色我总是觉得我两个WordPress博客的主题里使用的鼠标悬停变色的颜色不太喜欢,就是当鼠标划过或停留在某一个链接上的时候&…

圆面积异常

package zengliang;import java.util.*;public class Suv {public static void main(String[] args) {// TODO 自动生成的方法存根try{double r,s;final double PI 3.14;Scanner scnew Scanner(System.in);System.out.println("输入圆的半径:");r sc.ne…

SpringBoot学习笔记(9)----SpringBoot中使用关系型数据库以及事务处理

在实际的运用开发中,跟数据库之间的交互是必不可少的,SpringBoot也提供了两种跟数据库交互的方式。 1. 使用JdbcTemplate 在SpringBoot中提供了JdbcTemplate模板类,JdbcTemplate提供的方法进行增删改查的操作。 首先需要在pom文件中添加依赖:…

Processes

转载于:https://www.cnblogs.com/EMH899/p/10844709.html

[html] 说说video标签中预加载视频用到的属性是什么?

[html] 说说video标签中预加载视频用到的属性是什么? 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

CodeSmith 5.0工具实例篇系列4——根据表生成修改的存储过程,针对MS Sqlserver

运行该模板时,只需要选择单个表即可。 申明:该系列案例已通过CodeSmith Professional 5.0.1 Revision 4983版本的测试,以及生成的存储过程是针对MS Sqlserver。 操作说明 :运行CodeSmith Studio工具 ,创建Blank Templa…

差分放大电路单端输出和双端输出区别以及应用(转载)

来自:http://www.elecfans.com/news/dianzi/20171118581901_a.html 什么是差分放大电路 差分放大电路利用电路参数的对称性和负反馈作用,有效地稳定静态工作点,以放大差模信号抑制共模信号为显著特征,广泛应用于直接耦合电路和测量…

Flash 缓存问题的解决(转)

Flash 缓存问题的解决 作者:wangwaizi 时间: 2003-12-27 文档类型:翻译 来自:蓝色理想 原文是Flash支持中心的两篇文章.解决Flash缓存问题 | 解决载入变量缓存问题 使用以下的方法,使SWF文件强制不从浏览器读本地…

matlab可以使用词云分析吗,利用豆瓣短评数据生成词云

在之前的文章中,我们获得了豆瓣爬取的短评内容,汇总到了一个文件中,但是,没有被利用起来的数据是没有意义的。前文提到,有一篇微信推文的关于词云制作的一个实践记录,准备照此试验一下。思路分析读文件利用…

第一阶段冲刺08

1、整个项目的预期任务量(任务量所有工作的预期时间)和目前已经花的时间(所有记录的‘已经花费的时间’),还剩余的时间(所有工作的‘剩余时间’)。第一阶段工作预期任务:完成整个App…

matlab中腐蚀图像的编写,Matlab实现二值图像的腐蚀算法源代码

标签:1、二值图像的腐蚀原理:我们知道,二值图像就是0和1组成的矩阵,0为黑1为白,腐蚀作用在1上面也就是图像高光白色部分,然后白色部分往外收缩。腐蚀就是类似于黑色军队反攻白色军队,最终把自己…

第五次实训作业继承

1、实现如下类之间的继承关系,并编写Music类来测试这些类。 2、编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类E。要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public v…

Chrome 过滤广告插件暂替办法

由于Chrome暂无广告过滤插件,我们只能通过其他方法是实现Google Chrome的广告过滤。 这里我们需要用到Privoxy这款软件!由于Privoxy是通过本地代理来实现广告过滤的,所以用chrome也通过Privoxy实现广告过滤。 Privoxy是款免费软件&#xff0c…

JavaScript调用WebServices

经过几天研究,终于可以再单个js文件(纯JavaScript,不涉及AJax控件)调用WebServices了。现将调用方法及注意事项分享给大家 1、WebServices文件源码WebService.asmx usingSystem;usingSystem.Collections;usingSystem.Linq;usingSystem.Web;usingSystem.W…

oracle11g和12c安装区别,Oracle下载与Oracle安装图解(Oracle19c,Oracle18c,Oracle12c,Oracle11g)...

oracle下载与oracle安装图解(oracle19c,oracle18c,oracle12c,oracle11g)1、oracle下载(oracle11g)oracle下载方法,请根据以下步骤与图示来下载oracle11g版本:oracle11g下载第1步:打开oracle官方网站oracle11g下载第2步:打开菜单-支…