java中upcasting的内存分配
考虑这些类:
public class Animal{ } public class Dog extends Animal{ } public AnimalTest(){ public static void main(String[] args){ Dog d = new Dog(); Animal a = d; } }
我的问题是因为我对Animal a = d;
进行了向上翻译Animal a = d;
它是否在机器上消耗新的内存分配,或者是否使用分配给Dog d = new Dog();
的内存Dog d = new Dog();
动物a = d;
a
只是一个引用,引用的内存分配在方法堆栈(或jvm堆栈,而不是堆)中。
也就是说,当调用main
方法时,JVM将分配一个包含引用空间的堆栈。
Actual对象或其内存占用不受影响。 只创建一个对象的新引用。 唯一的区别是引用a
只能调用超类动物中可用的方法或访问属性。