假设a是父类。让b和c作为它的子类。
A a; B b = new B(args); a = b;
类型b对象是否仍然可以通过b访问,或者是否已永久向上转换为类型a?
iecba09b1#
演员根本不会改变对象。它只是给了你“一种不同的看待对象的方式”(把它看作是“a”而不是“b”)。他们对同一个物体有不同的看法。您通过 a 将通过 b 等。没有演员也是如此。例如,如果有 setValue / getValue 一对行为明显的方法,你会看到:
a
b
setValue
getValue
B b1 = new B(args); B b2 = b1; b1.setValue(10); System.out.println(b2.getValue()); // 10
赋值不会复制对象-它会从中复制对对象的引用 b1 至 b2 .你可能会发现我解释变量、引用和对象之间区别的答案也很有用。
b1
b2
1条答案
按热度按时间iecba09b1#
演员根本不会改变对象。它只是给了你“一种不同的看待对象的方式”(把它看作是“a”而不是“b”)。他们对同一个物体有不同的看法。您通过
a
将通过b
等。没有演员也是如此。例如,如果有
setValue
/getValue
一对行为明显的方法,你会看到:赋值不会复制对象-它会从中复制对对象的引用
b1
至b2
.你可能会发现我解释变量、引用和对象之间区别的答案也很有用。