假设我们有两个类。
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/