首页 > 解决方案 > 子类字段可以在父类中使用吗?

问题描述

有没有办法在父类构造函数或方法中使用子类字段或属性?

public class Parent
{
    public Parent()
    {

    }
}
public class Child : Parent
{
    public int y;
    public Child()
    {

    }
}
class Program
{
    static void Main(string[] args)
    {
        Parent obj = new Child();
        obj.y = 10;
    }
}

在上面的代码中,我无法访问“y”字段

标签: c#.netoop

解决方案


当您通过对没有任何知识obj的父类访问您的实例时,您肯定无法访问该成员,因为它仅在子类上定义。y

换句话说:每个Child都是 aParent并且具有y- 属性。但不是每一个Parent也是一个Child

因此,您的参考obj必须具有 compile-time-type Child,而不是Parent

Child obj = new Child();
obj.y = 10;

推荐阅读