gpt4 book ai didi

java - 了解继承的基本java代码

转载 作者:行者123 更新时间:2023-11-29 06:58:32 26 4
gpt4 key购买 nike

为什么 System.out.println(b.h + ""+ b.getH()); 打印以下内容:

Beta 44 <br/>
4 44 (notice this is in the second line)

我期待它打印出这样的东西:

4 Beta 44 44   (this one is in one line)

我认为它会以这种方式打印的原因是因为我们首先调用 b.h 是 4。然后我们调用 b.getH() 它将打印 Beta 44 44

代码如下:

class Baap{

int h = 4;
public int getH(){
System.out.println("Beta " + h);
return h;
}
}

class Beta extends Baap{
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());
}

}

最佳答案

输出是因为 System.out.println(b.h + ""+ b.getH()); 中的表达式先求值然后打印。所以顺序是

System.out.println(b.h + " " + b.getH());  // calls getH() method
System.out.println("Beta " + h); //print Beta 44
System.out.println(b.h + " " + b.getH()); //prints 4 44

所以完整的o/p是

Beta 44
4 44

b.h4 因为变量不是继承的所以它通过引用调用即 Baap 类的 h 变量.
b.getH() 为您提供从 Beta 类方法返回的 44 值(在 Beta 类中 h=44)。

关于java - 了解继承的基本java代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29862464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com