new和Override分别有什么作用(什么情况下用new或者Override)
override
-
用途:
override
用于在派生类中重写基类中的虚方法或抽象方法。- 重写的方法必须与基类中的方法具有相同的签名(方法名、参数列表和返回类型)。
- 基类中的方法必须声明为
virtual
、abstract
或已经由另一个override
方法重写。
-
多态性:
override
支持多态性,允许在运行时根据对象的实际类型来决定调用哪个方法版本。- 即使通过基类类型的引用调用方法,也会调用派生类中重写的方法。
-
示例:
public class BaseClass { public virtual void Method() { Console.WriteLine("Base Method"); } } public class DerivedClass : BaseClass { public override void Method() { Console.WriteLine("Derived Method (Overridden)"); } } // 使用 BaseClass baseInstance = new DerivedClass(); baseInstance.Method(); // 输出 "Derived Method (Overridden)"
new
-
用途:
new
通常用于实例化一个新的对象。- 在派生类中,
new
可以用来隐藏基类中的成员,这意味着派生类中的成员将取代基类中的成员,但不会改变其行为。 - 当使用
new
隐藏基类中的成员时,必须确保方法签名相同。
-
隐藏基类成员:
- 使用
new
关键字隐藏基类中的成员意味着通过派生类的对象直接调用该成员时,会使用派生类中的实现。 - 如果通过基类类型的引用调用成员,则会调用基类中的成员。
- 使用
-
示例:
public class BaseClass { public virtual void Method() { Console.WriteLine("Base Method"); } } public class DerivedClass : BaseClass { public new void Method() { Console.WriteLine("Derived Method (Hidden)"); } } // 使用 DerivedClass derivedInstance = new DerivedClass(); derivedInstance.Method(); // 输出 "Derived Method (Hidden)" BaseClass baseInstance = new DerivedClass(); baseInstance.Method(); // 输出 "Base Method"
总结:
override
用于实现多态性,重写基类中的虚方法或抽象方法,使得通过基类引用调用时也能得到派生类的行为。new
用于隐藏基类中的成员,使得通过派生类直接调用时使用派生类的实现,而通过基类引用调用时则使用基类的实现。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!