与继承的概念一样,我经历了使用父类实例访问子类成员的过程,但由于引发错误,它无法正常工作。我的代码如下:package base;public class p { String college = "vrce"; void does() { System.out.println("student"); }}public class c extends p { String branch = "ece"; public static void main(String[] args) { /*c o= new c(); System.out.println(o.college); System.out.println(o.branch); o.does(); all child and parent work*/ p o = new c(); ////c p System.out.println(o.college); System.out.println((o.branch)); o.does(); /* p o= new p(); System.out.println(o.college); // System.out.println(o.branch);//child details can't o.does();*/ }}如上所示,p类是父类并且c是子类,我想使用branch父类实例访问子成员p o = new c();。如果可能,怎么可能?如果不是,那为什么不可能。请详细解释一下?提前致谢。
2 回答

小唯快跑啊
TA贡献1863条经验 获得超2个赞
由于您有对 class 的引用p
,即 Parent 类,您只能访问由父类定义的方法和字段。
如果您需要访问子类定义的方法和字段,则需要对其进行强制转换:
System.out.println((c) o.branch);
提示:p
并且c
不是类的好名字。最好使用描述性词语。在这个例子中,甚至Parent
会Child
更好。

MM们
TA贡献1886条经验 获得超2个赞
这将不起作用,因为 Classp
没有branch
. 您可以将其转换为c
然后从中获取分支,就像o
, 的实例c
一样((c)o).branch
。这会起作用,因为您知道o
它是c
. (即p o= new c();
)
正如@NickJ 提到的,类名和变量应该比p
,更详细/更具描述性c
(类通常以大写字母开头,如Parent
or Child
)
添加回答
举报
0/150
提交
取消