黑马程序员技术交流社区
标题:
打印类名有疑问
[打印本页]
作者:
adamjy
时间:
2014-4-21 20:34
标题:
打印类名有疑问
本帖最后由 adamjy 于 2014-4-22 12:40 编辑
代码如下,
public class Demo extends DataInputStream{
public Demo(InputStream in) {
super(in);
// TODO Auto-generated constructor stub
}
public static void main(String[] args) throws Exception {
new Demo(null).printName();
}
public void printName() {
System.out.println(super.getClass().getSimpleName());
}
}
复制代码
//output: Demo
问题:为什么打印结果不是 DataInputStream、
作者:
kuroro自走核炮
时间:
2014-4-21 20:44
this表示当前对象的指针(或叫引用),super是一个java关键字,用于访问父类的成员和方法。
所以调用的getClass()的确是父类方法,但是当前对象已经是子类了,super不代表父类对象。
对当前子类进行得到类名肯定还是得到子类的类名啊。
如果你想要得到父类对象,反射里面不是还有getSuperclass()这个方法么?
作者:
⒈心只霸占沵
时间:
2014-4-21 21:16
getClass();//返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象
this调用getClass和super调用getClass得到的都是Demo
所以他们指向的是同一份字节码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2