C#访问器和对象类继承

因此,关于对象继承和构造函数,我可能有一个幼稚的问题。基本上,一个类具有一个对象:


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呢?


Qyouu
浏览 168回答 2
2回答

江户川乱折腾

不可以,您不能将基本属性的类型更改为返回不同的(派生的)类型。如果不需要继承,则采用标准解决方法-通用类:public class ParentClass<T> {&nbsp; &nbsp; &nbsp; public T ItemValue { get; set; }...}public class ChildClass : ParentClass<ChildClass>&nbsp;{&nbsp; ...}请注意,如果您只需要访问自己类中的item,则可以拥有virtual属性:public class Parent { }public class Child:Parent { public string ChildProperty; }public abstract class ParentClass{&nbsp; &nbsp; public abstract Parent ItemValue { get; }}public class ChildClass : ParentClass{&nbsp; &nbsp; Child item;&nbsp; &nbsp; public override Parent ItemValue { get {return item;} }&nbsp; &nbsp; public void Method()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp;// use item's child class properties&nbsp; &nbsp; &nbsp; &nbsp;Console.Write(item.ChildProperty);&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP