为了账号安全,请及时绑定邮箱和手机立即绑定

C#访问器和对象类继承

C#访问器和对象类继承

C#
Qyouu 2021-03-31 13:10:03
因此,关于对象继承和构造函数,我可能有一个幼稚的问题。基本上,一个类具有一个对象: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);

    }

}


查看完整回答
反对 回复 2021-04-10
  • 2 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信