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

通过继承在java中访问具有父类实例的子类成员

通过继承在java中访问具有父类实例的子类成员

HUX布斯 2022-05-25 16:08:48
与继承的概念一样,我经历了使用父类实例访问子类成员的过程,但由于引发错误,它无法正常工作。我的代码如下: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不是类的好名字。最好使用描述性词语。在这个例子中,甚至ParentChild更好。


查看完整回答
反对 回复 2022-05-25
?
MM们

TA贡献1886条经验 获得超2个赞

这将不起作用,因为 Classp没有branch. 您可以将其转换为c然后从中获取分支,就像o, 的实例c一样((c)o).branch。这会起作用,因为您知道o它是c. (即p o= new c();

正如@NickJ 提到的,类名和变量应该比p,更详细/更具描述性c(类通常以大写字母开头,如Parentor Child


查看完整回答
反对 回复 2022-05-25
  • 2 回答
  • 0 关注
  • 132 浏览

添加回答

举报

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