首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Java
J2SE / 基础类
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
关于super和this
[已结贴,结贴人:java2000_net]
加为好友
发送私信
在线聊天
zaqxsw3210
等级:
发表于:
2007-11-15 22:35:07
楼主
public Sender(Container c, Writer out) {
super(c);
this.out = out;
}
这里括号里两句话有什么用呢?
这个函数有什么用呢?
一直不明白,很多函数好像都有这两句话。
有高手能说明一下吗?
问题点数:
20
回复次数:
19
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
cracker234
各个感
等级:
发表于:
2007-11-15 22:59:10
1
楼 得分:
2
super(c); 父类构造
this.out 指当前字段有个out,防止重名添加this;不能out=out;
这个函数是赋值
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ftj237
等级:
发表于:
2007-11-15 23:10:46
2
楼 得分:
2
楼上正解
http://www.10zhizui.cn
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
apples_009
重积分
等级:
发表于:
2007-11-15 23:22:56
3
楼 得分:
2
this.out还不是很明白
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lihaifeng0412
^_^梦青^_^
等级:
发表于:
2007-11-15 23:26:52
4
楼 得分:
2
1楼的不错
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
SINCE1978
红杉树—生活就是与喜悦擦肩而过
等级:
发表于:
2007-11-16 12:13:30
5
楼 得分:
2
this.out的this可加可不加,编译器会替你处理好。
你的这个函数是构造的作用,就是初始化本类、为本类成员赋上值。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ProvidenceZY
erikchang
等级:
发表于:
2007-11-16 12:21:23
6
楼 得分:
2
this.out 表示该类中有一个类变量out
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ProvidenceZY
erikchang
等级:
发表于:
2007-11-16 12:22:29
7
楼 得分:
0
this.out 表示该类中有一个类变量out
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ProvidenceZY
erikchang
等级:
发表于:
2007-11-16 12:22:52
8
楼 得分:
0
this.out 表示该类中有一个类变量out
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
rorey_008
等级:
发表于:
2007-11-16 13:05:10
9
楼 得分:
1
理解这个问题,需要首先搞清楚什么是this,this是一个引用,谁的引用呢,一个实例本身的引用;
用this可以去访问类中的方法,成员变量等
比如,
public class Example
{
private int x;
private int y;
public Example(x,y)
{
this.x = x // 给类中的private变量赋值
this.y = y
}
}
你说的this.out,其中的out必定是这个this指向类的一个成员变量,建议看看Sender这个方法所在的类
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ftgreat
等级:
发表于:
2007-11-16 14:21:06
10
楼 得分:
1
mark
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
guojie1689
~杰~
等级:
发表于:
2007-11-16 14:42:25
11
楼 得分:
1
this代表当前对象,你的当前类中有一个属性叫做out,前面用this.out就是把外面传进来的那个out赋给你这个类中的属性out
super()是调用父类的构造方法用的,也可以用super.属性名来调用父类中的属性
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
palocc
五彩的怒气
等级:
发表于:
2007-11-16 14:54:23
12
楼 得分:
1
this实在理解不了,就按照英文意思李家好了。“这个”
this.out=out如果用中文翻译,可以译为“这个类的out=out”
this其实就是“谁调用这个方法,this就是谁的对象实例”
比如楼主的例子
public Sender(Container c, Writer out) {
super(c);
this.out = out;
}
this是被Sender这个方法调用的,那么this值得就是Sender这个方法所在的类这个对象。假设楼主这个类的完整形式这这样:
class TestSender()
{
private Writer out;
private Container c;
public Sender(Container c, Writer out) {
super(c);
this.out = out;
}
}
那么这里的this可以理解为 new TestSender().那么this.out就相当于 new TestSender().out = out;
后面那个out好理解,就是传近方法的那个形参。
不知道说清楚来了没……呵呵
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zaqxsw3210
等级:
发表于:
2007-11-16 15:53:40
13
楼 得分:
0
class Sender extends Blockable { // send
private Writer out;
public Sender(Container c, Writer out) {
super(c);
this.out = out;
}
public void run() {
while(true) {
for(char c = 'A'; c <= 'z'; c++) {
try {
i++;
out.write(c);
state.setText("Sender sent: "
+ (char)c);
sleep((int)(3000 * Math.random()));
} catch (InterruptedException e){}
catch (IOException e) {}
}
}
}
}
这是完整的代码
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
palocc
五彩的怒气
等级:
发表于:
2007-11-16 16:38:40
14
楼 得分:
0
这样看来, super(c);就是调用Blockable这个父类的构造方法。
而this.out,如我前面说的,可以理解为 new Sender().out = out;
因为如果直接用out = out,会混淆不知道哪个个out是类的成员变量,哪个是方法的形参。
用了this以后,“这个类的out = out”,
明白了吗?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Mailbomb
网络咖啡http://blog.csdn.net/mailbomb
等级:
发表于:
2007-11-16 17:13:09
15
楼 得分:
1
super(c) 调用父类的构造方法
this.out = out 把传入参数out赋值给属性out
这个是构造方法,作用是用来创建对象的
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
CaiKanXP
等级:
发表于:
2007-11-16 22:30:40
16
楼 得分:
1
5楼说法不准确,super()大家都说得不错
this则表示对象自身,
this.out则表示自身对象的out属性
至于“可加可不加”,则是在这个方法局部没有和属性重名的时候;如果有重名,则一定要加上this以明确表示对象属性,不加this表示那个重名的变量。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lengyuqing523
等级:
发表于:
2007-11-16 22:40:46
17
楼 得分:
1
如果把你的代码改成这样也可以
public Sender(Container c, Writer x) {
super(c);
out = x;
}
如果用X倒是没什么问题 就是看着不舒服~
如果用
out=out;
那岂不是重名了
所以就用了
this.out(这个this就告诉编译器我说的这个out 是上面的out 不是这个out) =out;
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lilifb
等级:
发表于:
2007-11-17 13:31:03
18
楼 得分:
1
this.out的this可加可不加,编译器会替你处理好。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zhaozhengzzlt
code:47
等级:
发表于:
2008-06-18 22:20:04
19
楼 得分:
0
仿佛明白了,谢谢大家吧。
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友