-2
 class Base
    {
        public virtual void Method()
        {
            Console.WriteLine("Base method");
        }
    }
    class Derived : Base
    {
        public override void Method()
        {
            Console.WriteLine("Derived method");
        }
    }
    class MyClient
    {
        public static void Main()
        {

            Base b1 = new Derived();
            b1.Method(); // Displays 'Base Method' 
           Console.ReadLine();
        }
    } 

出力は何ですか?

どうやって来たの?説明してください

4

2 に答える 2

1

出力、「派生メソッド」である必要があります。派生クラスでメソッドをオーバーライドすると、クラスのインスタンスのそのメソッドの実装が変更されます。

したがって、 として参照b1していてもBase、ランタイムはそれが実際には のインスタンスであることを認識しておりDerived、後者の実装を使用します。

于 2013-04-19T07:49:13.120 に答える