有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么程序稍后会输出代码中的其他内容?

class A { int x = 1; }
class B extends A { }
class C extends B { int x = 2;}
public class classTest {
public static void main(String[] args) {
A w = new A(); System.out.println(w.x);
B u = new B(); System.out.println(u.x);
C v = new C(); System.out.println(v.x);
A [] a = { new A(), new B(), new C()};
for (int i=0; i<3; ++i)
System.out.println(a[i].x);
}
}

对于这个,它会打印出:

1
1
2
1
1
1

为什么作为Class C一部分的变量v每次运行时都会输出不同的变量?例如,在C v = new C(); System.out.println(v.x);中,它输出2,并在中的最后一个循环中:

for (int i=0; i<3; ++i) System.out.println(a[i].x); }

它会打印出1?为什么运行Class C的第一个输出不是1,因为它扩展了它,所以x将等于2,但随后将被运行x = 1Class B的x等于1覆盖

我在大学里学习课程,我们几乎不涉及这个话题

多谢各位


共 (1) 个答案

  1. # 1 楼答案

    这是由您声明类型A的数组生成的,那么所有对象都将属于此类型。和类类型A返回1。 也许您应该使用接口或抽象类