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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© y200745 中级黑马   /  2014-7-22 00:19  /  1077 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近,在继承的构造函数中,出现了一个问题:
代码如下:

  1. public class Parent
  2. {
  3. public Parent()
  4.         {
  5.         System.out.println(this);
  6.         }
  7. }
  8. class child extends Parent
  9. {
  10.         public child()
  11.         {
  12.                 super();
  13.         }
  14.         public static void main (String []args)
  15.                 {  
  16.                  child a=new  child();
  17.                 }
  18.        
  19. }
复制代码
问题是,我执行改代码的时候,在父类的构造函数中,为什么输出的是子类对象呢?也就是this为什么代表子类啊?求大神?????

这个是我的运行结果:child@3771ed5e







6 个回复

倒序浏览
在这里会出现这个现象是super()语句的关系。super()会访问父类中空参数的构造函数。同时传递过来的就是子类对象,这个时候this指向的就是子类对象
回复 使用道具 举报
this就是代表对象,你创建了子类对象,那this当然指向子类。
无参构造函数被调用,你不写super();也会被调用,那输出的this,就是子类。
回复 使用道具 举报
this.指的是本类对象的引用。因为你创建的对象是Child ,根本没有创建Parent对象,只好去子类里面找对象了。
代码上楼主可以这么理解
把子类中的super() 换成
public Parent()
        {
        System.out.println(this);
        }

这样就明白了吧,
回复 使用道具 举报
this代表的是对象的引用,你的对象是子,当然是子啦
回复 使用道具 举报
哪个对象在使用有 this 的代码, this 就代表哪个对象,所以 this 代表子类!
回复 使用道具 举报
爷丶 う 发表于 2014-7-22 12:45
哪个对象在使用有 this 的代码, this 就代表哪个对象,所以 this 代表子类!

精辟,居然把这个给忘了,奶奶的。学乱了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马