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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© y200745 中级黑马   /  2014-7-22 00:19  /  985 人查看  /  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 个回复

正序浏览
爷丶 う 发表于 2014-7-22 12:45
哪个对象在使用有 this 的代码, this 就代表哪个对象,所以 this 代表子类!

精辟,居然把这个给忘了,奶奶的。学乱了。
回复 使用道具 举报
哪个对象在使用有 this 的代码, this 就代表哪个对象,所以 this 代表子类!
回复 使用道具 举报
this代表的是对象的引用,你的对象是子,当然是子啦
回复 使用道具 举报
this.指的是本类对象的引用。因为你创建的对象是Child ,根本没有创建Parent对象,只好去子类里面找对象了。
代码上楼主可以这么理解
把子类中的super() 换成
public Parent()
        {
        System.out.println(this);
        }

这样就明白了吧,
回复 使用道具 举报
this就是代表对象,你创建了子类对象,那this当然指向子类。
无参构造函数被调用,你不写super();也会被调用,那输出的this,就是子类。
回复 使用道具 举报
在这里会出现这个现象是super()语句的关系。super()会访问父类中空参数的构造函数。同时传递过来的就是子类对象,这个时候this指向的就是子类对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马