黑马程序员技术交流社区

标题: 字节码问题 [打印本页]

作者: 黑马李杰    时间: 2013-4-14 16:25
标题: 字节码问题
本帖最后由 黑马李杰 于 2013-4-15 20:48 编辑

父类的引用指向子类的对象,那个变量名得到的字节码为什么是子类的字节码,而不是父类的子类码?如SupClass sup = new SubClass();Class clazz = suo.getClass();


作者: liuyangyang    时间: 2013-4-14 16:34
你好,
父类只是起到引用作用,并没有父类的实例对象,当然父的的字节码也加载到内存中了。
但是你是用子类的实例对象的方法方法获取字节码的,获得的字节码就是子类的字节码了、。

作者: 胡国彬    时间: 2013-4-14 18:10
虽然变量名的引用是父类的,但是实例化的是子类的对象,也就是说,内存中保存的其实是子类的对象,父类的引用只起到一个引用这个内存地址的作用.
而当你真正要得到这个引用的字节码的时候,会从内存中去加载这个引用所真正对应的那个数据,所以,得到的是子类的字节码.
作者: 王洪宇    时间: 2013-4-14 18:12
我的理解:
多态的运用中有两个环境:编译时环境和运行时环境。
一个引用编译时检查的是父类,运行时运行的是子类。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2