Java - 你如何向上和向下转换同一个对象

标签 java oop object casting

假设我们有两个类。

class Animal{/*code*/}
class Cat extends Animal{/*code*/}

据我所知,向上转型和向下转型是这样工作的

Cat c1 = new Cat();
Animal a = c1; //Upcasted to Animal
Cat c2 = (cat) a; //Downcasted back to Cat

但唯一的问题是,每次向上转型或向下转型时,都会创建一个新对象。无论如何,是否可以将一个对象从 Cat 转换为 Animal 再转换回 Cat,以便只转换一个对象?例如

Cat c --> Animal c --> Cat c //Upcasted to Animal, and downcasted back to Cat, but done all on one object.

谢谢!

最佳答案

这 3 行只在堆中创建一个对象和 3 个指向同一个对象的引用

Cat c1 = new Cat(); //this is where object is created in heap
Animal a = c1; //Upcasted to Animal, only reference is created not new object
Cat c2 = (cat) a; //Downcasted back to Cat, only reference is created not new object

您可以启动调试器并检查这些引用是否指向同一个对象。

关于Java - 你如何向上和向下转换同一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54897785/

相关文章:

PHP 如何将对象数组与数组数组合并

java - 如何迭代由 firebase 随机生成的不同键值

java - org.hibernate.HibernateException : Current transaction is not in progress

java - 从 Android 中的 Openfire 服务器获取所有用户的列表

java - 与java文件处理相关

javascript - 从 JavaScript 中的私有(private)函数访问公共(public)函数

c# - 在不需要许多并行对象模型的情况下设计 MVC/EF 系统

javascript - 将 2 个元素数组的 JavaScript 数组转换为对象键值对

java - OOP AP CS 练习

c++ - 创建实际对象数组 C++