因此,关于对象继承和构造函数,我可能有一个幼稚的问题。基本上,一个类具有一个对象:public class ParentClass{protected Parent item;访问器如下:public Parent ItemValue{ set { item = value; } get { return item; }}现在,我想继承该类:public class ChildClass:ParentClass { public new Child item; }现在,每当我Child item通过继承的访问器访问时,它当然都会将该项目作为Parent类而不是Child类返回。有没有一种方法可以使它返回itemasChild类而不会覆盖the访问器ChildClass呢?
2 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
不可以,您不能将基本属性的类型更改为返回不同的(派生的)类型。
如果不需要继承,则采用标准解决方法-通用类:
public class ParentClass<T> {
public T ItemValue { get; set; }
...
}
public class ChildClass : ParentClass<ChildClass>
{
...
}
请注意,如果您只需要访问自己类中的item,则可以拥有virtual属性:
public class Parent { }
public class Child:Parent { public string ChildProperty; }
public abstract class ParentClass
{
public abstract Parent ItemValue { get; }
}
public class ChildClass : ParentClass
{
Child item;
public override Parent ItemValue { get {return item;} }
public void Method()
{
// use item's child class properties
Console.Write(item.ChildProperty);
}
}
- 2 回答
- 0 关注
- 167 浏览
添加回答
举报
0/150
提交
取消