Java 为什么子类对象的父类引用不能访问子类变量?

Java 为什么子类对象的父类引用不能访问子类变量?,java,Java,父类 儿童班 父类引用子类对象 调用父类变量 调用子类方法 似乎您希望通过父引用访问子字段变量c Parent p = new Child(); System.out.println(p.c); 它将输出父项的字段c,您无法通过父项引用访问子项的c,因为通过p是子项的一个实例,但是它是通过Parentreference访问的,并且Parent reference无法到达子级的c 如果要打印子项的c。您应按以下方式进行向下转换: Child child = (Child)(p); System.

父类

儿童班

父类引用子类对象

调用父类变量

调用子类方法


似乎您希望通过父引用访问子字段变量c

Parent p = new Child();
System.out.println(p.c);
它将输出父项的字段c,您无法通过父项引用访问子项的c,因为通过
p
子项的一个实例,但是它是通过
Parent
reference访问的,并且Parent reference无法到达子级的c

如果要打印子项的c。您应按以下方式进行向下转换:

Child child = (Child)(p);
System.out.println(child.c);

它将打印child

c
ParentChildExample
类在哪里?您还没有定义
ParentChildExample
就编译器而言,您的
p
变量属于
Parent
类型。由于
Parent
没有字段
c
,因此它不起作用。就是这样。谢谢你的帮助,但是你能解释一下为什么我们不能像没有子方法一样访问子变量吗downTypeCast@user4886675through p是child的实例,但它是通过父引用访问的,父引用无法到达child的c。
            Parent p = new Child();
            System.out.println(p.c);
            p.display();
        }
    }
Parent p = new Child();
System.out.println(p.c);
Child child = (Child)(p);
System.out.println(child.c);