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 // }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器