请看下面的代码:
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 我不明白输出的顺序。
发布于 2016-01-05 12:59:08
System.out.println(b.h + "," + b.geth());
在这个打印结果,它需要评估什么是b.geth()。因此,最终打印的是Beta44,然后是4,44。
类似的事情也发生在语句上:System.out.println(bb.h + "," + bb.geth());
发布于 2017-01-24 09:30:00
它首先计算println()语句中的表达式,因为Beta44首先被打印出来。然后从左到右开始打印println语句中的值,然后打印4,44。它打印4,因为实例变量是Baap类型的。因此,它选择在Baap类中定义的变量的值。
希望能帮上忙。
https://stackoverflow.com/questions/34612063
复制相似问题