このMSDNの記事で参照されているように:
派生クラスの型オブジェクトは、基本クラスから継承された新しい再定義されたメソッドにアクセスできず、継承されたShowDetails()
メソッド内のメソッドからの派生クラスのオブジェクトの呼び出しは、基本クラスDescribeCar()
のメソッドに対して行われShowDetails()
ます。
DescribeCar()
メソッドもクラスで使用できる場合、ConvertibleCar
いわゆるnew ShowDetails()
メソッドが表示されないのはなぜですか?
class Car
{
public void DescribeCar()
{
System.Console.WriteLine("Four wheels and an engine.");
ShowDetails();
}
public virtual void ShowDetails()
{
System.Console.WriteLine("Standard transportation.");
}
}
// Define the derived classes.
// Class ConvertibleCar uses the new modifier to acknowledge that ShowDetails
// hides the base class method.
class ConvertibleCar : Car
{
public new void ShowDetails()
{
System.Console.WriteLine("A roof that opens up.");
}
}
class Program
{
static void Main(string[] args)
{
ConvertibleCar car2 = new ConvertibleCar();
car2.DescribeCar();
}
}
//output
// Four wheels and an engine.
// Standard transportation.