在Java中转换对象时,是否保留了对原始对象的引用?

时间:2013-10-14 02:38:11

标签: java

例如,如果我有一个类Utensil然后我像这样实例化它:

Utensil utensil = new Utensil();

然后还有一个新的课程Fork,并像这样投了utensil

Fork fork = (Fork)utensil;

fork是否仍在引用原始utensil对象?

3 个答案:

答案 0 :(得分:4)

是的,假设ForkUtensil的子类。

更好的例子是ForkUtensil的子类:

Fork fork = new Fork();
Utensil utensil = fork;

此时变量forkutensil都引用同一个对象。

答案 1 :(得分:3)

转换对象会为您提供对同一对象的引用,但会将其视为您将其转换为的类型。
(拳击转换除外)

答案 2 :(得分:3)

我认为这不是你的意思。在您的示例中,如果Fork扩展了Utensil,那么您的代码会抛出错误,因为utensil不是Fork而且无法分配给fork。

如果你这样做的话

Fork fork = new Fork();
Utensil utensil = fork;

然后器具仍将引用原始的Fork对象。所以我想你问题的答案是肯定的。