• 【转】override和new的区别?


    先看下面这段代码的输出:

        class ClassA
        { 
            public virtual void WriteString()
            {
                Console.WriteLine("ClassA类virtual WriteString");
            }

            public void Write()
            {
                Console.WriteLine("ClassA类void Write");
            }
        }
        class ClassB : ClassA
        {
            public override void WriteString()
            {
                Console.WriteLine("ClassB类override void WriteString");
            }

            public new  void Write()
            {
                Console.WriteLine("ClassB类new  void Write");
            }
        }

        class WatinConsoleExample
        {
            [STAThread]
            static void Main(string[] args)
            {
                ClassB b = new ClassB();
                ClassA a = (ClassA)b; //转换为其类
                a.WriteString(); //ClassB中用override实现,输出为:   ClassB类override void WriteString
                a.Write();  // ClassB中用new实现,输出为:   ClassA类void Write
                Console.ReadLine();
            }
        }


    上面这段代码的输出结果为:
    ClassB类override void WriteString
    ClassA类void Write

    由此得出结论:
    1.派生类中用new实现基类的同名方法,把派生类强制转换为基类型时,将调用基类中的实现;
    2.相反,派生类中用override 实现基类的virtual 同名方法,把派生类强制转换为基类型时,仍将调用派生类自己的实现。

     

    转自star163的博客,原文地址http://www.cnblogs.com/finejob/articles/970957.html

  • 相关阅读:
    深度学习和神经网络的区别是什么
    各种数据类型范围
    排队接水
    最大整数
    马拉松接力赛
    合并果子
    统计学生信息(使用链表完成)
    删除数组中的元素(链表)
    求最大公约数(最小公倍数)
    十进制转化成八进制(一到十六进制)
  • 原文地址:https://www.cnblogs.com/xiaoyusmile/p/2553704.html
Copyright © 2020-2023  润新知