关于c#的基类的问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 16:05:48
下面这段代码中的“public car(int w,float g,int p) :base(w,g)”是什么意思啊,我觉得没用,注释掉了结果是一样的。但是不明白他是什么意思。谢谢各位。

using System;
class Vehicle
{
public int wheels;
protected float weight;
public Vehicle(){;}
public Vehicle(int w,float g)
{
wheels=w;
weight=g;
}
public void show()
{
Console.WriteLine("the wheel of vehicle is:{0}",wheels);
Console.WriteLine("the weight of vehicle is:{0}",weight);
}
}
class train
{
public int num;
private int passengers;
private float weight;
public train(){;}
public train(int n,int p,float w)
{
num=n;
passengers=p;
weight=w;
}
public void show()
{
Console.WriteLine("The number of train is:{0}",num);
Console.WriteLine("The passengers of train is:{0}",passengers);
Console.WriteLine("The weight of train is:{0}",weight)

public car(int w,float g,int p) :base(w,g)
表示调用基类的含有两个参数的构造函数
因为你在子类中又赋值了w,g所以结果一样
你改成这样试试就知道了
public car(int w,float g,int p) :base(w,g)
{
//wheels=w;
//weight=g;
passengers=p;
}

public car(int w,float g,int p) :base(w,g)
的意思是重载了父类的构造函数。构造函数的重载和一般方法的重载是不一样的,构造函数的重载相当于在执行了父类的构造函数之后再执行一定的逻辑,而不是直接覆盖父类的逻辑。

如果你在public car(int w,float g,int p) :base(w,g)中定义类一些逻辑,那么这些逻辑在你按照这个参数类型构造的时候就会在执行了父类的(w,g)后再执行你写的逻辑。