猿问

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

与继承的概念一样,我经历了使用父类实例访问子类成员的过程,但由于引发错误,它无法正常工作。我的代码如下:


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


如果可能,怎么可能?如果不是,那为什么不可能。请详细解释一下?提前致谢。


HUX布斯
浏览 160回答 2
2回答

小唯快跑啊

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

MM们

这将不起作用,因为 Classp没有branch. 您可以将其转换为c然后从中获取分支,就像o, 的实例c一样((c)o).branch。这会起作用,因为您知道o它是c. (即p o= new c();)正如@NickJ 提到的,类名和变量应该比p,更详细/更具描述性c(类通常以大写字母开头,如Parentor Child)
随时随地看视频慕课网APP

相关分类

Java
我要回答