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在方法表中拥有两个Print方法。其中一个可以由Father访问,anthor可以自己访问?哪一个是对的?或者都不对?请告诉我!谢谢!

4

1 回答 1

4

谁创造了它?显然不是我

是什么让你如此确定?你当然可以:

Son s = new Son();

或者在方法表中Son拥有两个Print方法。

不,它只有一个Print方法,但它还有别的东西:它知道它的基类 ,Father它有自己的Print方法。这就是为什么Son可以访问两个Prints - 它自己的和他Father的。

于 2012-10-06T02:54:22.287 回答