new和Override分别有什么作用(什么情况下用new或者Override)

override

  1. 用途

    • override 用于在派生类中重写基类中的虚方法或抽象方法。
    • 重写的方法必须与基类中的方法具有相同的签名(方法名、参数列表和返回类型)。
    • 基类中的方法必须声明为 virtualabstract 或已经由另一个 override 方法重写。
  2. 多态性

    • override 支持多态性,允许在运行时根据对象的实际类型来决定调用哪个方法版本。
    • 即使通过基类类型的引用调用方法,也会调用派生类中重写的方法。
  3. 示例

    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

  1. 用途

    • new 通常用于实例化一个新的对象。
    • 在派生类中,new 可以用来隐藏基类中的成员,这意味着派生类中的成员将取代基类中的成员,但不会改变其行为。
    • 当使用 new 隐藏基类中的成员时,必须确保方法签名相同。
  2. 隐藏基类成员

    • 使用 new 关键字隐藏基类中的成员意味着通过派生类的对象直接调用该成员时,会使用派生类中的实现。
    • 如果通过基类类型的引用调用成员,则会调用基类中的成员。
  3. 示例

    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 用于隐藏基类中的成员,使得通过派生类直接调用时使用派生类的实现,而通过基类引用调用时则使用基类的实现。
posted @   .NET每天都很酷  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示