A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

之前的视频里遇到引用变量和对象操作老师都有内存图讲解,讲完之后思路一下就清晰了,讲到继承这一块就没内存图讲解了。。。就好懵。

谁能讲解一下继承的过程里内存里变量和方法和对象是如何调用和创建的。。。感激不尽
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

9 个回复

倒序浏览
首先从子类的构造器说起  1.在new子类对象时 构造器会默认优先调用父类的构造器,用于初始化父类的成员变量,再执行子类的构造器初始化自己的成员变量。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
2.new的时候在堆内存创造子类对象空间,并且分成两块,一块用于储蓄父类的成员 另一块用于存寸子类的成员。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
3.调用方法时,先在子类中找是否存在,如果存在就直接调用,不存在时再去父类那边找。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
BigOrange 发表于 2016-12-16 21:55
3.调用方法时,先在子类中找是否存在,如果存在就直接调用,不存在时再去父类那边找。
...

super就是像this指向本类那样直接指向父类?
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
你这涉及到jvm的一些设计了,假如,我是jvm设计者,将父类的字节码载入到静态方法区,维护一个子类字节码指向父类的指针,这样就实现了关联,实现了关联,就可以通过关联寻找父类中我们需要调用的方法
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
张海东 来自手机 中级黑马 2016-12-17 12:14:21
7#
父类和子类是在同一个内存地址哒
回复 使用道具 举报
张海东 发表于 2016-12-17 12:14
父类和子类是在同一个内存地址哒

就是说new一个对象会开辟两个内存地址么?
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
cyifovou 发表于 2016-12-17 12:48
就是说new一个对象会开辟两个内存地址么?

是开辟一个内存空间里面分两半一半给父类一半给子类
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
BigOrange 发表于 2016-12-17 12:50
是开辟一个内存空间里面分两半一半给父类一半给子类

好的,谢谢,不过今天视频里对this super这些关键字有更深的讲解了。我在理解上也比前两天更清晰了一些
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马