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

时间:2018-04-03 00:36:51

标签: java

Array
(
    [2018-03-27] => Array
    (
        [0] => 10:00:00
    )

    [2018-03-28] => Array
    (
        [0] => 11:00:00
        [1] => 12:00:00
    )
)

所以为此,它打印出来:

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 的变量v每次运行时会输出不同的变量Class C?例如,在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等于{时,它将被覆盖来自1的{​​{1}} Class B运行Class A

我正在上大学课程,我们几乎没有涉及这个主题。

谢谢。

1 个答案:

答案 0 :(得分:1)

这是由您声明类型A的数组生成的,然后所有对象都是这种类型。类类型A返回1。 也许你应该使用接口或抽象类