如何将基参数从重载的构造函数传递到派生类[重复]
Posted
技术标签:
【中文标题】如何将基参数从重载的构造函数传递到派生类[重复]【英文标题】:How to pass base parameters from an overloaded constructor into the derived class [duplicate] 【发布时间】:2015-07-31 12:34:06 【问题描述】:主要
static void Main(string[] args)
string name = "Me";
int height = 130;
double weight = 65.5;
BMI patient1 = new BMI();
BMI patient2 = new BMI(name,height,weight);
Console.WriteLine(patient2.Get_height.ToString() + Environment.NewLine + patient1.Get_height.ToString() );
Console.ReadLine();
基类
class BMI
//memberVariables
private string newName;
private int newHeight;
private double newWeight;
//default constructor
public BMI()
//overloaded constructor
public BMI(string name, int height, double weight)
newName = name;
newHeight = height;
newWeight = weight;
//poperties
public string Get_Name
get return newName;
set newName = value;
public int Get_height
get return newHeight;
set newHeight = value;
public double Get_weight
get return newWeight;
set newWeight = value;
派生类
class Health : BMI
private int newSize;
public Health(int Size):base()
newSize = Size;
如何将基类参数从 BMI 基类中的重载构造函数传递到派生类? 每当我尝试将它们传递给基本参数时,我都会收到无效的表达式错误。 或者我只需要将它们传递给主要的 Health 对象吗? 例如
class Health : BMI
private int newSize;
public Health(int Size, string Name, int Height, double Weight)
newSize = Size;
base.Get_Name = Name
base.Get_weight = Weight;
base.Get_height = Height;
【问题讨论】:
我建议将您的属性重命名为Height
、Name
和 Weight
。以Get
为前缀使它们看起来像是在调用方法或访问只读属性。
【参考方案1】:
为什么不能像传参一样调用基类构造函数
public Health(int Size, string Name, int Height, double Weight)
: base(Name, Height, Weight)
newSize = Size;
【讨论】:
【参考方案2】:像这样:
class Health : BMI
private int newSize;
public Health(int Size, string Name, int Height, double Weight)
: base(Name, Height, Weight)
newSize = Size;
【讨论】:
【参考方案3】:构造函数不是继承的,所以是的,您需要为基类创建一个新的构造函数,但是您可以使用适当的参数调用基构造函数:
public Health(int size, string name, int height, double weight)
: base(name, height, weight)
newSize = size;
【讨论】:
基础构造函数的大小写不正确。 @d347hm4n 谢谢,已修复。以上是关于如何将基参数从重载的构造函数传递到派生类[重复]的主要内容,如果未能解决你的问题,请参考以下文章