java继承程序,答案为什么是:0?

素胚勾勒不出你
浏览 590回答 2
2回答

吃鸡游戏

我用了最笨的方法,new 一个对象的时候,实际是在jvm里面分配内存,初始化参数,基本参数为0,引用参数为null.并没有赋值,从上面我们可以看到,new 子类先走父类构造,调text()时,子类重写了所以走自己的text,此时的a并没有赋值,所以输出是0.但我完成对象的构建过后,再输出a,此时已经赋值完成,输出了6.这个都是JVM的一些东西,比较复杂

慕婉清6462132

兄弟,我查了好久,这个程序的执行顺序是:建立子类sub的对象,接着调用父类的构造方法Super,Super中调用test方法,此时test方法调用的是子类的test方法,而不是Super类的,原因是建立的是子类的对象,这一点类似于Super s= new Sub(); s.test调用的就是子类的test方法;说完原因,这个是时候由于子类的构造方法还没有执行,所以成员变量a还是默认值,int类型的默认值也就是0;此时父类的构造方法执行完毕,接下来执行子类的构造方法(子类的构造方法是系统默认的无参数的构造方法),这时候a的值才为6,所以,最后程序的输出是0。你可以建一个Sub引用去接收这个子类对象,然后打印出a,就会输出6;建一个Super引用去接收这个对象,打印a就可以输出5.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java