1
public class Father
{
  // static string TYPE = "FATHER";
    public Father()
    {
        //Console.WriteLine("ctor");
    }
    public virtual void Print()
    {
        Console.WriteLine("I'm father");
    }
}

public class Son:Father
{
    public override void Print()
    {
        base.Print();
        Console.WriteLine("I'm son");
    }
}

私たちが知っているように、Son.Print()を呼び出すと、「私は父です」と「私は息子です」が出力されます。Father.Print()はインスタンスメソッドであるため、最初にインスタンスを作成する必要があります。 。それが質問です。誰が作成しますか?明らかに、私ではありません...または、Sonはメソッドテーブルに2つのPrintメソッドを所有しています。そのうちの1つは父がアクセスでき、anthorは単独でアクセスできますか?どちらが正しいですか、どちらも正しくありませんか?教えてください!ありがとうございます!

4

1 に答える 1

4

誰が作成しますか?明らかに私ではありません

何があなたをそんなに確信させますか?もちろん、あなたはします:

Son s = new Son();

または、methodtableにSon2つのメソッドを所有しています。Print

いいえ、メソッドは1つだけですが、別のメソッドがあります。独自のメソッドを持つPrint基本クラス、を認識しています。そのため、自分自身と彼の2つのにアクセスできます。FatherPrintSonPrintFather

于 2012-10-06T02:54:22.287 に答える