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);