public Car(int w, float g, int p):base(w,g)
{
wheels = w;
weight = g;
passengers = p;
}
上面这个构造函数有重复操作,当然就成了你说的去掉:base(w,g)结果都一样。
因为wheels = w; weight = g; 这两句在基类构造函数中已经执行,也就是
:base(w,g)就已经执行wheels = w; weight = g;这两句,结果你在上面的Car构造函数里又执行了一次。
上面的函数应该写为:
public Car(int w, float g, int p):base(w,g)
{
passengers = p;
}
你在试试去掉与不去掉的效果
构造子类需要调用父类的构造函数,通过:base 可以调用带有参数的指定的构造函数
本例为
new Vehicle(w,g);
去掉:base(w,g),默认调用
new Vehicle();
因为Vehicle(w,g)只是初始化wheels和weight,而Car(int w, float g, int p)中也初始化了wheels和weight,所以结果一样。
如果改成
public Car(int w, float g, int p):base(w,g)
{
passengers = p;
}
就可以看出差别了
如果删除
public Vehicle()
{
;
}
去掉:base(w,g)则会报错