我有两节课Taxi和Van。可以说van1是 的一个实例Van。每当我跑步时van1.ReturnNumOfPass(),它都无法正常工作。
我认为它会返回Taxi.num_of_pass。有什么方法可以修复或者我必须重写该方法吗?先感谢您
internal class Taxi
{
private string SPZ;
private int num_of_pas;
private int max_num_of_pas = 4;
public virtual int ReturnNumOfPas() => num_of_pas;
}
internal class Van : Taxi
{
private string SPZ;
private int num_of_pas;
private int max_num_of_pas = 2;
}
Run Code Online (Sandbox Code Playgroud)
我尝试在返回this之前添加num_of_pass
您将其num_of_pas作为private每个类中的变量 - 这意味着它们是独立变量。
如果您想Van使用与 相同的内容num_of_pas,Taxi请将其声明为protectedinTaxi并从 中删除声明Van。像这样:
internal class Taxi
{
protected int num_of_pas = 4;
public virtual int ReturnNumOfPas()
{
return num_of_pas;
}
}
internal class Van : Taxi
{
public Van()
{
num_of_pas = 8;
}
}
Run Code Online (Sandbox Code Playgroud)
为了测试这一点,我运行了这段代码:
Van van = new();
Console.WriteLine(van.ReturnNumOfPas());
Run Code Online (Sandbox Code Playgroud)
结果是8输出到Console.
如果我编写更惯用的 C#,那么我可能会期望这样的内容:
internal class Taxi
{
public int NumberOfPassengers { get; protected set; } = 4;
}
internal class Van : Taxi
{
public Van()
{
this.NumberOfPassengers = 8;
}
}
Run Code Online (Sandbox Code Playgroud)
我们通常会使用属性来返回值,而不是函数。