bob*_*rry 2 java oop casting object
假设我们有两个类。
class Animal{/*code*/}
class Cat extends Animal{/*code*/}
Run Code Online (Sandbox Code Playgroud)
从我所学到的,向上和向下的工作是这样的
Cat c1 = new Cat();
Animal a = c1; //Upcasted to Animal
Cat c2 = (cat) a; //Downcasted back to Cat
Run Code Online (Sandbox Code Playgroud)
但唯一的问题是,每次向上或向下转换时,都会创建一个新对象。无论如何,是否可以将对象从 Cat 向上和向下从 Cat 转换为 Animal 并返回到 Cat,以便只投射一个对象?例如
Cat c --> Animal c --> Cat c //Upcasted to Animal, and downcasted back to Cat, but done all on one object.
Run Code Online (Sandbox Code Playgroud)
谢谢!
这 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
Run Code Online (Sandbox Code Playgroud)
您可以启动调试器并检查这些引用是否指向相同的对象。