Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象在被向上转换后(在Java中)是否可以从以前的引用访问?_Java_Oop_Reference_Upcasting - Fatal编程技术网

对象在被向上转换后(在Java中)是否可以从以前的引用访问?

对象在被向上转换后(在Java中)是否可以从以前的引用访问?,java,oop,reference,upcasting,Java,Oop,Reference,Upcasting,假设A是父类。让B和C成为它的子类 A a; B b = new B(args); a = b; 类型B对象是否仍然可以通过B访问,或者是否已永久向上转换为类型A?转换根本不会更改对象。它只是给你“一种不同的看待对象的方式”(把它看成是“a”而不是“B”)。但他们对同一个物体有不同的看法。您通过a所做的任何更改都将通过b等可见 没有演员阵容也是如此。例如,如果有一对具有明显行为的setValue/getValue方法,您将看到: b1=新的B(args); b2=b1; b1.设定值(10);

假设A是父类。让B和C成为它的子类

A a;
B b = new B(args);
a = b;

类型B对象是否仍然可以通过B访问,或者是否已永久向上转换为类型A?

转换根本不会更改对象。它只是给你“一种不同的看待对象的方式”(把它看成是“a”而不是“B”)。但他们对同一个物体有不同的看法。您通过
a
所做的任何更改都将通过
b
等可见

没有演员阵容也是如此。例如,如果有一对具有明显行为的
setValue
/
getValue
方法,您将看到:

b1=新的B(args);
b2=b1;
b1.设定值(10);
System.out.println(b2.getValue());//10
分配不会复制对象-它会将对象的引用从
b1
复制到
b2


您可能也会觉得很有帮助。

变量
b
及其引用的对象不会因为您将同一对象分配给
a
而受到影响。哦,欢迎回复!在第一行之内。感谢您的快速澄清@Jon@shadyshamus:Goodo-我添加了更多的解释,以帮助其他发现此内容的人:)