| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 762 人关注过本帖
标题:this指针的不解之处
只看楼主 加入收藏
andywu
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-8-26
收藏
 问题点数:0 回复次数:6 
this指针的不解之处

java在调用实例方法时都会由编译器隐式传入this指针,那么我想问的是当在一个构造器中通过super()来引用超类的默认构造器时,会不会有this传入?要是this传入那这个this应该是哪个类的?

搜索更多相关主题的帖子: 指针 
2007-08-27 17:34
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
收藏
得分:0 
会的。因为子类对象里包含一个夫类的子对象。。传入的这个this就是从夫类继承过来的。其实这些没有必要搞清除,记得一点调用构造器的目的就是为了类的成员可以得到初始化,而这个初始化包括:进入构造器以前的初始化和构造器中的初始化,如果不调用夫类的构造器,夫类的成员就不能得到初始化。
2007-08-27 18:01
andywu
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-8-26
收藏
得分:0 

我就是知道底层的。。。
你没有说清楚。。。能细点吗?你说“子类对象里包含一个夫类的子对象“是指什么?
“传入的这个this就是从夫类继承过来的“ 是怎么继承过来的?没明白 除了public 类型的属性和方法可以继承外this是怎么继承的?有点不可思议,能详细的讲下吗?谢谢了

2007-08-27 18:41
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
收藏
得分:0 
并不是只有public的东西才可以继承,所有的东西都可以继承的。只不过不是如果是private的话,不能访问而已。每个类都有this,在继承的时候当然也会继承下来了this.只不过在子类里是不能访问基类的this的。只能通过基类的构造函数去访问。
2007-08-27 19:56
andywu
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-8-26
收藏
得分:0 

那你还没有告诉我在super()后传给父类构造器的这个this到底是子类的还是父类的呢?

2007-08-27 20:47
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
收藏
得分:0 
调用super()其实是初始化子类中的父类子对象的this.所有对象的this都是一层一层的被包装起来的。比如A继承了B,B继承了C,那么A里面有个B类子对象的this,而B里面又有一个C类子对象的this.当你在A类里调用B类的构造器时,其实是为了初始化这个this以及所有A继承自B的域,而当你调用B类构造器的时候B类的构造器里面又会调用C类的构造器来初始化C类在B类中的this以及B类从C类中继承而来的域。。如果LZ还想知道底层如何工作,请自己用命令java-verbose:class 你自己的类。来看看底层具体一个类是什么时候加载到内存中,具体也是什么时候被初始化的。
2007-08-27 21:45
老小吴
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-8-9
收藏
得分:0 


努力的笨小孩
2007-08-29 00:48
快速回复:this指针的不解之处
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011807 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved