黑马程序员技术交流社区

标题: 获取父类Class字节码文件时:两个输出是否可以?一样吗 [打印本页]

作者: hejinzhong    时间: 2014-8-21 06:14
标题: 获取父类Class字节码文件时:两个输出是否可以?一样吗
本帖最后由 hejinzhong 于 2014-8-21 06:23 编辑

  1. import java.util.Date;
  2. class Test extends Date
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 new Test().test();
  7.         }

  8.         public void test()
  9.         {
  10.                 System.out.println(super.getClass().getName());
  11.                 System.out.println(getClass().getSuperClass().getName());
  12.         }
  13. }
复制代码

作者: 136616244    时间: 2014-8-21 07:11
估猜第一个不行,因为super不是父类直接地址的引用,只是指向了父类,
作者: a6511631    时间: 2014-8-21 10:21
你打错了哥们,第13行的方法是getSuperclass()。老师好像有提过,第一种是返回子类的字节码名,第二种返回超类,
作者: 怀念黑海岸    时间: 2014-8-21 13:25
很奇怪,第一个打印的结果是父类,第二个打印结果是子类,难道getClass().getSuperclass()返回的不是子类的父类吗,API上说的很清楚啊: 返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class,那么为什么结果还是子类的名称呢?
       有哪位大婶可以出来解惑下么。。
作者: hejinzhong    时间: 2014-8-21 20:33
怀念黑海岸 发表于 2014-8-21 13:25
很奇怪,第一个打印的结果是父类,第二个打印结果是子类,难道getClass().getSuperclass()返回的不是子类的 ...

你说反了把!第一个打印的是子类,第二个打印的是父类。
我翻了下API,getclass()这个方法是object中的方法,关键点不是这里,而是他是final类型方法,代表着什么呢?虽然所有类都继承了object,但是他们都没有权利去覆写这个方法,只是拿来使用。也就是说每个方法中的getclass()方法都一样。
在这里 super.getClass 和 this.getClass 是一样。所以第一个输出的还是子类本身的字节码。

这么理解可以?
作者: hejinzhong    时间: 2014-8-21 20:34
136616244 发表于 2014-8-21 07:11
估猜第一个不行,因为super不是父类直接地址的引用,只是指向了父类,

Test继承了Date,父类中的getclass不是私有,为何不能访问呢?
作者: 136616244    时间: 2014-8-21 20:35
hejinzhong 发表于 2014-8-21 20:34
Test继承了Date,父类中的getclass不是私有,为何不能访问呢?

曾经看见老师试过打印this的地址就是本类对象的地址,打印super报错了,,这样子
所以还是有差别的
作者: hejinzhong    时间: 2014-8-21 20:36
a6511631 发表于 2014-8-21 10:21
你打错了哥们,第13行的方法是getSuperclass()。老师好像有提过,第一种是返回子类的字节码名,第二种返回 ...

貌似13行这样还是OK的把!
作者: 谢建平    时间: 2014-8-22 02:15
System.out.println(super.getClass().getName());
System.out.println(getClass().getSuperclass().getName());   我的理解 getClass()都是Object 的方法 ,super.getClass和this.getClass()应该结果一样吧
作者: 何艳梅    时间: 2014-8-23 23:28
恩恩,函数是final的话,就是相同,也就是带入的代码都是一样的。




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