new、override和终类sealed

NEW修饰符与重载

new修饰符主要用于在子类中重新定义父类中的字段或方法(同名)

用new重定义后父类方法将会被隐藏,若不想隐藏父类方法,就改个名字

 

重载时重新定义父类中已拥有的某方法,父类中方法要加virtual修饰符,而子类中重新定义的方法要加override修饰符

 

new 与override的区别

当使用override重写时

复制代码
 1 public class BaseClass
 2 {
 3     public virtual void Test() => Console.WriteLine("Base");
 4 }
 5 
 6 public class MyClass : BaseClass
 7 {
 8     public override void Test() => Console.WriteLine("666");
 9 
10 }
复制代码

运行下述

BaseClass baseTest = new MyClass();
baseTest.Test();

结果为 666

当使用new关键字时并运行上述时

复制代码
 1 public class BaseClass
 2 {
 3     public virtual void Test() => Console.WriteLine("Base");
 4 }
 5 
 6 public class MyClass : BaseClass
 7 {
 8     public new void Test() => Console.WriteLine("666");
 9 
10 }
11 
12 //运行
13 BaseClass baseTest = new MyClass();
14 baseTest.Test();
复制代码

结果为 Base

重写后用上述方法定义基类,运行为重写后方法

用new隐藏后,依然可以通过基类来访问被隐藏的方法

终类

终类为不可继承的类,用sealed修饰符表示,种类无法强行继承,否则会报错

复制代码
 1     public sealed class Teacher   //sealed 定义不能继承的终类
 2         {
 3             private string name;
 4             public string Name { get=>name ; set =>name=value; }15         }
16 
17     //public class Teacher1:Teacher   //会报错并提示无法从密封类中继承
18     //    {
19 
20     //    }
复制代码

 

posted @   邢韬  阅读(262)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示