1

これについて満足のいく説明を見つけることができませんでした。したがって、これをSOに投稿すると役立つと思いました。

組み合わせるとどうなるかmethod hiding and overriding in C# ?

以下の例では:

class BaseClassA
{
    public virtual void showMessage()
    {
        Console.WriteLine("In BaseClass A ");
    }
}
class DerivedClassB : BaseClassA
{
    public override void showMessage()
    {
        Console.WriteLine("In DerivedClass B ");
    }
}

class DerivedClassC : DerivedClassB
{
    public new void showMessage()
    {
        Console.WriteLine("In DerivedClass C");
    }
}

class Program
{
    static void Main(string[] args)
    {
        BaseClassA a = new BaseClassA();
        a.showMessage();
        a = new DerivedClassB();
        a.showMessage();
        BaseClassA b = new DerivedClassC();
        b.showMessage();
        Console.ReadKey();   
    }
}

の出力を理解しています

 BaseClassA b = new DerivedClassC();
 b.showMessage();

ここに画像の説明を入力

これが私がC#で理解しnewていることですoverride

New- baseclass メソッドを非表示にします。したがって、基底クラスの参照変数が派生クラスのオブジェクトを指していても、その派生クラスがメソッドを隠している場合、出力は基底クラスの出力のみになります。

Override- 基本クラスのメソッドをオーバーライドします。そのため、派生クラスがメソッドをオーバーライドする場合、基底クラスの参照変数が派生クラス オブジェクトを指していても、出力は派生クラスの出力になります。

しかしここでは、参照変数でさえオブジェクトをBaseClassA指して、出力を出力できるのでしょうか?DerivedClassCDerivedClassB

簡単な言葉で説明してください。

4

1 に答える 1