为啥我不能继承这个变量?
Posted
技术标签:
【中文标题】为啥我不能继承这个变量?【英文标题】:Why can't I inherit this variable?为什么我不能继承这个变量? 【发布时间】:2015-02-03 02:13:13 【问题描述】:我收到此代码的一个错误:
An object reference is required for the non-static field, method, or property
我正在尝试从派生类继承 itemNo 变量以将其放入构造函数中,但由于某种原因它不接受它。
完整代码:
public class InvItem
protected int itemNo;
protected string description;
protected decimal price;
public InvItem()
public InvItem(int itemNo, string description, decimal price)
this.itemNo = itemNo;
this.description = description;
this.price = price;
public int ItemNo
get
return itemNo;
set
itemNo = value;
public string Description
get
return description;
set
description = value;
public decimal Price
get
return price;
set
price = value;
public virtual string GetDisplayText(string sep)
return itemNo + sep + description + " (" + price.ToString("c") + ")";
public class Plant : InvItem
private decimal size;
public Plant()
public Plant(int itemNumber, string description, decimal price, decimal size) : base(itemNo, description, price)
this.Size = size;
public decimal Size
get
return size;
set
size = value;
public override string GetDisplayText(string sep)
return base.GetDisplayText(sep) + " (" + size + ")";
它发生在带有参数的 Plant 类构造函数中。我尝试将其设置为 public、private 和 protected,但它们都产生相同的结果。
【问题讨论】:
变量itemNo
不存在,正确的变量是public Plant(int itemNumber, string description, decimal price, decimal size) : base(itemNumber, description, price)
【参考方案1】:
当您在构造函数上调用base
时,这些变量甚至还不存在(基类尚未构造)。
因此,您不能在 base
构造函数调用中将类成员传递给它。相反,您需要:
public Plant(int itemNumber, string description, decimal price, decimal size) :
base(itemNumber, description, price)
这会将提供给Plant
的参数传递给基类,这正是您想要的。
【讨论】:
【参考方案2】:public Plant(int itemNumber, string description, decimal price, decimal size)
: base(itemNo, description, price)
this.Size = size;
当你在构造函数中使用它时,你还没有访问基类成员的权限,所以你得到了错误。
【讨论】:
【参考方案3】:您不能在构造函数中引用继承的属性。这样做:
public Plant(int itemNumber, string description, decimal price, decimal size)
: base(itemNumber, description, price)
this.Size = size;
【讨论】:
以上是关于为啥我不能继承这个变量?的主要内容,如果未能解决你的问题,请参考以下文章
JAVA,为啥final类不能被继承,如果定义为final的类该类里面成员变量不特殊说明则是final类还是非final
为啥我不能在使用 Javascript 的 if 语句中重新分配这个变量? [复制]