请看这段代码:
public class Baap {
public int h = 4;
public int geth() {
System.out.println("Baap" + h);
return h;
}
}
public class Beta extends Baap {
public int h = 44;
public int geth() {
System.out.println("Beta" + h);
return h;
}
public static void main(String[] args) {
Baap b = new Beta();
System.out.println(b.h + "," + b.geth());
Baap bb = (Beta) b;
System.out.println(bb.h + "," + bb.geth());
}
}
此代码的输出是
Beta44
4,44
Beta44
4,44
我不明白输出的顺序
答案 0 :(得分:2)
System.out.println(b.h + "," + b.geth());
在此打印结果时,需要评估b.geth()
是什么。因此,首先打印Beta44
首先打印4,44
类似的事情正在发生声明:System.out.println(bb.h + "," + bb.geth());
答案 1 :(得分:0)
它首先在println()语句中计算表达式,因为Beta44首先打印出来。然后它从println语句开始从左到右打印值,然后打印4,44。它打印4因为实例变量是Baap类型。因此,它选择Baap类中定义的变量值。
希望它会有所帮助。