关于super和this,该如何处理
关于super和this
public Sender(Container c, Writer out) {
super(c);
this.out = out;
}
这里括号里两句话有什么用呢?
这个函数有什么用呢?
一直不明白,很多函数好像都有这两句话。
有高手能说明一下吗?
------解决方案--------------------
super(c); 父类构造
this.out 指当前字段有个out,防止重名添加this;不能out=out;
这个函数是赋值
------解决方案--------------------
楼上正解
http://www.10zhizui.cn
------解决方案--------------------
this.out还不是很明白
------解决方案--------------------
1楼的不错
------解决方案--------------------
this.out的this可加可不加,编译器会替你处理好。
你的这个函数是构造的作用,就是初始化本类、为本类成员赋上值。
------解决方案--------------------
this.out 表示该类中有一个类变量out
------解决方案--------------------
理解这个问题,需要首先搞清楚什么是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这个方法所在的类
------解决方案--------------------
mark
------解决方案--------------------
this代表当前对象,你的当前类中有一个属性叫做out,前面用this.out就是把外面传进来的那个out赋给你这个类中的属性out
super()是调用父类的构造方法用的,也可以用super.属性名来调用父类中的属性
------解决方案--------------------
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好理解,就是传近方法的那个形参。
不知道说清楚来了没……呵呵
------解决方案--------------------
super(c) 调用父类的构造方法
this.out = out 把传入参数out赋值给属性out
这个是构造方法,作用是用来创建对象的
------解决方案--------------------
5楼说法不准确,super()大家都说得不错
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;
------解决方案--------------------
this.out的this可加可不加,编译器会替你处理好。
public Sender(Container c, Writer out) {
super(c);
this.out = out;
}
这里括号里两句话有什么用呢?
这个函数有什么用呢?
一直不明白,很多函数好像都有这两句话。
有高手能说明一下吗?
------解决方案--------------------
super(c); 父类构造
this.out 指当前字段有个out,防止重名添加this;不能out=out;
这个函数是赋值
------解决方案--------------------
楼上正解
http://www.10zhizui.cn
------解决方案--------------------
this.out还不是很明白
------解决方案--------------------
1楼的不错
------解决方案--------------------
this.out的this可加可不加,编译器会替你处理好。
你的这个函数是构造的作用,就是初始化本类、为本类成员赋上值。
------解决方案--------------------
this.out 表示该类中有一个类变量out
------解决方案--------------------
理解这个问题,需要首先搞清楚什么是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这个方法所在的类
------解决方案--------------------
mark
------解决方案--------------------
this代表当前对象,你的当前类中有一个属性叫做out,前面用this.out就是把外面传进来的那个out赋给你这个类中的属性out
super()是调用父类的构造方法用的,也可以用super.属性名来调用父类中的属性
------解决方案--------------------
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好理解,就是传近方法的那个形参。
不知道说清楚来了没……呵呵
------解决方案--------------------
super(c) 调用父类的构造方法
this.out = out 把传入参数out赋值给属性out
这个是构造方法,作用是用来创建对象的
------解决方案--------------------
5楼说法不准确,super()大家都说得不错
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;
------解决方案--------------------
this.out的this可加可不加,编译器会替你处理好。