C#中overrid和new修饰符有什么不同
作者:蓝月夜 发布时间:2023-09-03 22:10:13
标签:c#,new,overrid,修饰符
在C#的继承中尝尝会用到相关的修饰词:override和new。这两个修饰符都可以在新的子类中,重写同名的父类方法。
override: 扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现需要使用到。
new:在用作声明修饰符时,new 关键字可以显式隐藏从基类继承的成员。 隐藏继承的成员时,该成员的派生版本将替换基类版本。
以上是这两个修饰符的解释。对于这两者之间的区别之类的说法,其实网上找到的有很多,大多都是些概念性的东西。我这里主要是对于,自己测试的代码和大家分享下。
using System;
public class BaseClass{
public virtual void ShowA(){
Console.WriteLine("A");
}
public void ShowB(){
Console.WriteLine("B");
}
public void ShowAB(){
ShowA();
ShowB();
}
}
public class TestClass:BaseClass{
public override void ShowA(){
Console.WriteLine("AA");
}
public new void ShowB(){
Console.WriteLine("BB");
}
}
public class Example
{
public static void Main()
{
TestClass test = new TestClass();
test.ShowA();
test.ShowB();
test.ShowAB();
BaseClass test1 = new TestClass();
test.ShowA();
test.ShowB();
test.ShowAB();
Console.ReadLine();
Console.WriteLine("运行结束");
}
}
输出结果如下:
可以看出,override相当于修改的父类的方法,对父类方法进行了重写。在父类方法中调用时,同样也是会调用到这个已经重写过得类。override重写的是父类地址下的方法实现信息。
对于new,对父类中的方法没有产生影响,当调用父类方法时,还是会执行父类的方法。调用子类方法时,则调用子类方法。只是方法的名字相同,从而造成了子类对父类的方法造成了一种隐藏的特性。new相当于重新开辟了新的方法实现位置,子类与父类方法的地址是不同的。
总结
以上所述是小编给大家介绍的C#中overrid和new修饰符有什么不同网站的支持!
来源:https://www.cnblogs.com/yueye/archive/2018/02/11/8442445.html


猜你喜欢
- 为什么不用SQLite? 原因多种:除了面向对象和关系数据库之间的阻抗不匹配时,SQLite可能是矫枉过正(带来了更多的开销)对于一些简单的
- 一:JDBCTemplate简介Spring为各种持久化技术提供了简单操作的模板和回调API:ORM持久化技术模板类原生JDBCorg.sp
- 看到题目后,分析了下, 10的阶乘就已经很大了。计算出来再得到这个末尾的0的个数,完全不现实,即使实现了也是很麻烦的。后来想某个数的阶乘中乘
- 引言今天给大家介绍一个非常有意思类库,基于java实现的简繁体转换,适用于后端、android等开发领域源码地址:* liuyueyi/qu
- java多线程-同步块Java 同步块(synchronized block)用来标记方法或者代码块是同步的。Java 同步块用来避免竞争。
- Android在启动模拟器AVD时,出现下面的异常:“Failed to allocate memory: 8”,怎么办?此错误是我们在允许
- CopyOnWriteArrayList介绍它相当于线程安全的ArrayList。和ArrayList一样,它是个可变数组;但是和Array
- 一、java端首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。webservice的接口代码:
- 目录前言实现思路实测前言需求 导出Excel:本身以为是一个简单得导出,但是每行得记录文件中有一列为图片url,需要下载所有记录行对应得图片
- springboot @ConfigurationProperties和@PropertySource区别@ConfigurationPro
- 在编程过程中一定要注意代码命名的规范性,否则在使用和维护过程中将造成很大的麻烦,这也是一种良好的编码习惯。看下面代码,除了userPass命
- 1、什么是过滤器?在客户端到服务器的过程中,当发送请求时,如果有不符合的信息将会被filter进行拦截,如果符合则会进行放行,在服务器给客户
- 本文实例讲述了C#实现TCP连接信息统计的方法。分享给大家供大家参考。具体实现方法如下:using System;using System.
- 核心代码: File fatherFile = new File(path);File[] files = fatherFile.listF
- 邮件绑定功能【需求】1、 用户注册时,输入邮箱2、 通过Javamail技术,向用户邮箱发送一封祝贺邮件1、javamail发送邮件1.1、
- 本文实例讲述了linux环境下java程序打包成简单的hello world输出jar包。分享给大家供大家参考,具体如下:1. linux必
- 引例问题:现在有一只羊(包含属性:名字Dolly、年龄2),需要克隆10只属性完全相同的羊。一般解法:定义Sheep类表示羊,包括构造器、g
- 智能终端上的游戏目前风头正劲,试问哪个智能手机上没有几款企鹅公司出品的游戏呢!之前从未涉猎过游戏开发,但知道游戏开发前要挑选一款合适的游戏引
- 新增获取自增列id1、实体类定义注意:@TableId(value = “id”, type = I
- Android—MaterialCardView的使用我们的征程是星辰大海,而非人间烟尘文章目录 Android---MaterialCar