Java 中父类引用指向子类对象时

2014-11-24 12:40:07 · 作者: · 浏览: 2

引用在栈内存中存在对象的内存地址。真正的对象(通过 new Student()创建的)存放在堆内存里。


在这块堆内存区域内,存在的是子类的属性(包括自己特有的,以及通过super()构造方法中从父类获得的)和方法(继承父类但没有覆盖的,以及覆盖父类的方法和自己特有的),尽管引用是声明为父类的引用,但是它指向的子类的对象,在执行方法的时候,是通过引用指向的堆内存区域内执行的。也就是到底执行父类方法还是子类方法是由对象决定的,跟引用没有直接关系。




演示代码如下:


Person.java


I'm a Student object and my name is ^-^