public Sender(Container c, Writer out) {
super(c);
this.out = out;
}
这里括号里两句话有什么用呢?
这个函数有什么用呢?
一直不明白,很多函数好像都有这两句话。
有高手能说明一下吗?
super(c);
this.out = out;
}
这里括号里两句话有什么用呢?
这个函数有什么用呢?
一直不明白,很多函数好像都有这两句话。
有高手能说明一下吗?
解决方案 »
- 请问,如果通过编程方式 让JTable表格 选中某一行??(查了API,貌似JTable TableModle Default TableModle都没有?!)
- 源文件编译成jar包的问题
- 如何使用JTABLE中的数据点击按钮后保存为CSV文件呢
- 请教FileDialog为什么设置FilenameFilter无效
- JMF的问题!我不信没人知道!!!
- 关于jni的问题 在线等
- 请问如何在Jcreator里使用ant?
- ResourceBundle.getBundle 从何处开始定位?
- java ftp中文问题
- 关于jboss+tomcat与数据库连接测试结果,请大家讨论一下。。
- 线程构造方法thread()和thread(this)的区别在哪里?
- 如何利用poi如何清空excle工作表中的信息,急!!!
this.out 指当前字段有个out,防止重名添加this;不能out=out;
这个函数是赋值
http://www.10zhizui.cn
你的这个函数是构造的作用,就是初始化本类、为本类成员赋上值。
用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这个方法所在的类
super()是调用父类的构造方法用的,也可以用super.属性名来调用父类中的属性
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好理解,就是传近方法的那个形参。
不知道说清楚来了没……呵呵
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) {}
}
}
}
}这是完整的代码
而this.out,如我前面说的,可以理解为 new Sender().out = out;
因为如果直接用out = out,会混淆不知道哪个个out是类的成员变量,哪个是方法的形参。
用了this以后,“这个类的out = out”,明白了吗?
this.out = out 把传入参数out赋值给属性out这个是构造方法,作用是用来创建对象的
this则表示对象自身,
this.out则表示自身对象的out属性
至于“可加可不加”,则是在这个方法局部没有和属性重名的时候;如果有重名,则一定要加上this以明确表示对象属性,不加this表示那个重名的变量。
如果把你的代码改成这样也可以
public Sender(Container c, Writer x) {
super(c);
out = x;
} 如果用X倒是没什么问题 就是看着不舒服~
如果用out=out;
那岂不是重名了
所以就用了this.out(这个this就告诉编译器我说的这个out 是上面的out 不是这个out) =out;