c#之new关键词——隐藏基类方法
当从基类继承了一个(非抽象成员时),也就继承了父类的实现代码。如果是virtual成员,可以override;另外一种方法也能隐藏父类的实现代码(虚成员和非虚成员都可使用):
定义与父类相同的方法名,加上关键词new
public class Parent
{
public void Fun()
{
Debug.log("我是爸爸");
}
public virtual void virtualFun()
{
Debug.log("我是妈妈");
}
}
class Son:Parent
{
public new void Fun()
{
Debug.log("我是爸爸的儿子");
}
public new void virtualFun()
{
Debug.log("我是妈妈的儿子");
}
}
如果不加关键字,不会报错,会有警告提醒你加上(效果是一样的,若是无意写重可以改正): 
效果:若是用父类定义的,依然调用父类的方法:
Parent person=new Son();
person.Fun();//非虚方法
person.virtualFun();//虚方法
运行结果:
与override的区别:如果是重写virtual方法(将virtualFun前面是new换成override),则会调用子类的方法:
c#之new关键词——隐藏基类方法的更多相关文章
- 关于在C#中对类中的隐藏基类方法和重写方法的理解
最近在学习C#,在C#中的类看到重写和隐藏基类的方法这些概念.才开始感觉自己不是很理解这些概念.也区分不开这些概念.通过自己的查找资料和练习后.慢慢的理解了类中的隐藏和重写这个概念.在C#中只有在基类 ...
- C#中子类对基类方法的继承、重写和隐藏
提起子类.基类和方法继承这些概念,肯定大家都非常熟悉.毕竟,作为一门支持OOP的语言,掌握子类.基类是学习C#的基础.不过,这些概念虽然简单,但是也有一些初学者可能会遇到的坑,我们一起看看吧. 子 ...
- 基类方法的反隐藏 反private 秘籍
class GoodStudent:private Mentor,private Student { public : using Mentor::GetInfo; ///------------ ...
- C#继承机制 访问与隐藏基类成员
(1) 访问基类成员 通过base 关键字访问基类的成员: 调用基类上已被其他方法重写的方法. 指定创建派生类实例时应调用的基类构造函数. 基类访问只能在构造函数.实例方法或实例属性访问器中进 ...
- c++子类调用基类方法的一个例子
Base.h #pragma once class Base { public: Base(void); ~Base(void); bool CreatClone( ...
- C# 类中隐藏基类方法和Partial
今天对于.NET开发人员来说最开心的事情莫过于微软搞开源了,这觉得是给搞.NET开发的长脸.虽然我是一个初学者,这无疑给我极大的学习动力.Fighting!!! 当一个类从父类继承了一个成员时,也就继 ...
- C#--类之隐藏基类的成员
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 【c# 学习笔记】使用新成员隐藏基类成员
如果想在派生类中定义与基类成员同名的成员,则可以使用new关键字把基类成员隐藏起来. 如果不适应new关键字,在派生类中定义一个与基类成员同名的成员,编译器将产生警告信息,如下代码演示: public ...
- c#隐藏和重写基类方法的异同
最近正在学习c#,对其中的方法重写和隐藏的概念很是模糊,现在将其归纳如下: 1:方法重写:就是在基类中的方法用virtual关键字来标识,然后在继承类中对该类进行重写(override),这样基类中的 ...
随机推荐
- Python replace方法的使用
在Python str 中, 有一个很方便的查找替换的函数 replace() my_str = "lowmanmana" new_str = my_str.replace(&qu ...
- 简述在MySQL数据库中MyISAM和InnoDB的区别
区别主要有以下几点: (1)构成上,MyISAM的表在磁盘中有三个文件组成,分别是表定义文件(.frm).数据文件(.MYD).索引文件(.MYI),而InnoDB的表由表定义文件(.frm).表空间 ...
- 查询改写(Query Rewrite)方法总结
为何需要Query改写 Query分析是搜索引擎的一个重要模块,对搜索结果的覆盖率和相关性至关重要.搜索引擎的检索过程包含了两个重要的阶段:匹配和排序.匹配也叫召回,表示根据用户的查询条件,尽可能多地 ...
- this引用逃逸(使用内部类获取未外部类未初始化完的变量),多态父类使用子类未初始化完的变量
1,this引用逃逸 并发编程实践中,this引用逃逸("this"escape)是指对象还没有构造完成,它的this引用就被发布出去了. 这是危及到线程安全的,因为其他线程有可能 ...
- linux 服务器性能监控(一)
这篇文章主要介绍一些常用的linux服务器性能监控命令,包括命令的常用参数.指标的含义以及一些交互操作. 几个问题 命令本身并不复杂,关键是你对操作系统基础知识的掌握和理解,先来看看下面几个问题: C ...
- Swift 使用 #warning
swift 中没法使用#Warning来提示警告, 可以通过给TODO: FIXME:加上警告, 实现类似的效果. Build Phases ---> Run Script ---> ad ...
- 安装nginx和nginx-gridfs和mongodb
1.安装依赖包: [root@mongo_rs1 ~]# yum -y install pcre-devel openssl-devel zlib-devel git gcc gcc-c++ [roo ...
- 【数组】Search a 2D Matrix
题目: Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the f ...
- MySQL查询表结构的SQL语句
desc 数据库.表名; eg: desc mysql.user;
- 数据序列化导读(2)[YAML]
上一节讲了JSON, 这一节将介绍YAML.可以认为,YAML是JSON的超集,但是更加简单易用,适合人类阅读和书写. 1. 什么是YAML? YAML是YAML Ain't Markup Lang ...