假设A是父类。让B和C是它的子类。
A a;
B b = new B(args);
a = b;
类型B对象是否仍然可以通过B访问,或者它是否已永久升级为类型A?
强制转换根本不会更改对象。它只会给你";一种不同的观看物体的方式";(将其视为"A"而不是"B"(。不过,他们对同一个物体有不同的看法。您通过a
所做的任何更改都将通过b
等可见
没有演员阵容也是如此。例如,若有一对具有明显行为的setValue
/getValue
方法,您会看到:
B b1 = new B(args);
B b2 = b1;
b1.setValue(10);
System.out.println(b2.getValue()); // 10
赋值不复制对象,而是将引用从b1
复制到b2
。
你可能会发现我解释变量、引用和对象之间的区别的答案也很有用。