java问题,高手进

2025-06-22 17:06:43
推荐回答(2个)
回答1:

输出:0 30 40

main中执行语句:System.out.println(new Sub().j);//创建Sub对象,打印该对象内的一个变量:
创建对象时,java虚拟机首先执行父类的构造方法
然后执行子类的构造方法,这样可以保证子类对象从所有直接或者间接继承的实例变量都被正确的初始化。(总是先有父亲才能生出儿子的)
所以执行顺序是:
System.out.println(i);
System.out.println(j);
System.out.println(new Sub().j);
结果就是:0 30 40

另:
子类必须调用父类的构造方法.如果你不明试的调用,那么会自动调用父类无参的构造方法.
如果恰好父类没有无参的构造方法,就会报错
如果你不提供任何构造方法,就会有一个默认构造方法,是无参的.但是如果你写了构造方法,就没有默认构造方法了.

回答2:

40,首先sub继承super,然后在里面定义变量j=30,然后在构造函数中重新对j进行赋值=40,然后print方法可以不看,然后在Main方法中调用sub方法,并且打印出sub方法的j的值,所以输出的是40