我是一个刚学C#的门外汉,刚学就遇到了小小的问题:
using System; //第1行
public class MotorVehicle
{
public string make;
public string model;//第5行
public MotorVehicle(string make,string model)
{
Console.WriteLine("In MotorVehicle constructor");
this.make=make;
this.model=model;//第10行
Console.WriteLine("this.make="+this.make);
Console.WriteLine("this.model="+this.model);
}
public void DisplayModel()
{ //15行
Console.WriteLine("In MotorVehicle DisplayModel() method");
Console.WriteLine("model="+model);
}
}
public class Car:MotorVehicle//20行
{
public new string model;
public Car(string make, string model):base(make,"Test")
{
Console.WriteLine("In Car constructor");//25行
this.model=model;
Console.WriteLine("this.model="+this.model);
}
public new void DisplayModel()
{ //30行
Console.WriteLine("In Car DisplayModel() method");
Console.WriteLine("model="+model);
base.DisplayModel();
}
} //35行
class Example7_4
{
public static void Main()
{
Console.WriteLine("Creating a Car object"); //40行
Car myCar=new Car("Toyota","MR2");
Console.WriteLine("Back in Main() method");
Console.WriteLine("myCar.make="+myCar.make);
Console.WriteLine("myCar.model="+myCar.model);
Console.WriteLine("Calling myCar.DisplayModel()"); //45行
myCar.DisplayModel();
}
}
请问上面这个程序的输出为什么不是:
Creating a Car object
Back in Main() method
myCar.make=Toyota
myCar.model=MR2
Calling myCar.DisplayModel()
In Car DisplayModel() methed
model=MR2
In MotorVehicle DisplayModel() method
model=Test
而是:
Creating a Car object
In MotorVehicle constructor
this.make=Toyota
this.model=Test
In Car constructor
this.model=MR2
Back in Main() method
myCar.make=Toyota
myCar.model=MR2
Calling myCar.DisplayModel()
In Car DisplayModel() methed
model=MR2
In MotorVehicle DisplayModel() method
model=Test