为什么我的输出没有给出预期的结果,即25
?我知道我的问题很愚蠢,但我是Java编程的新手。
输出是
run:
5
0
0
BUILD SUCCESSFUL (total time: 0 seconds)
但根据我的预期答案是5,因为我在议案中通过了5。
class A {
int a;
public void setA(int a) {
this.a = a;
}
}
class B extends A {
public int multi() {
int multi = a * a;
System.out.println(multi);
return multi;
}
}
class test {
public static void main(String[] args) {
A obj1 = new A();
obj1.setA(5);
B obj2 = new B();
int c = obj2.multi();
System.out.println(c);
}
}
答案 0 :(得分:3)
为什么输出没有给出预期结果,即25
因为您有两个不同的对象,每个对象都有一个独立的a
字段。您在一个对象中将值设置为5,然后在另一个对象上调用multi()
,因此它使用字段的默认值(0)。
如果您对这两个部分使用相同的对象,您将得到正确的答案:
B obj2 = new B();
A obj1 = obj2; // Now obj1 and obj2 refer to the same object
obj1.setA(5);
System.out.println(obj2.multi());