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只能调用超类动物中可用的方法或访问属性。