黑马程序员技术交流社区
标题:
关于this在构造函数中的调用问题
[打印本页]
作者:
钟伟杰
时间:
2013-4-16 14:56
标题:
关于this在构造函数中的调用问题
本帖最后由 钟伟杰 于 2013-4-16 18:50 编辑
class Person
{
private String name;
private int age;
Person()
{
System.out.println("person run");
}
Person(String name)
{
this();
this.name =name;
}
Person(String name,int age)
{
this(name);
this.age = age;
}
}
关于this在构造函数间的调用不是很明白,以上面的代码为例请教一下。
作者:
心弦上的景致
时间:
2013-4-16 15:09
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
作者:
艾萱
时间:
2013-4-16 15:32
this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。但凡本类功能内部使用了本类对象,都用this表示。
This代表它所在函数所属对象的引用。
简单说:哪个对象在调用 this所在的函数,this就代表哪个对象。
作者:
。。。。。。
时间:
2013-4-16 15:41
class Person
{
private String name;
private int age;
Person()
{
System.out.println("person run");
}
Person(String name)
{
this();//
这个this是调用的是
Person()这个无参数的结构函数
this.name =name
;
//这个this代表是本对象的name,与无参数中的name区分开来。
}
Person(String name,int age)
{
this(name);//
这个this是调用的是
Person(name),这个带参数String name的结构函数
this.age = age;
//
这个this代表是本对象的age,与无参数中的age区分开来
}
}
作者:
朱德帅
时间:
2013-4-16 16:39
class Person
{
private String name;
private int age;
Person()
{
System.out.println("person run");
}
Person(String name)
{
//这个就是调用本方法所属的类的不带参的构造方法。
this();
//这个同理,就是本方法所属类的属性name等于传进来的参数name
this.name =name;
}
Person(String name,int age)
{
//同理,调用本方法所属类的带String类型的构造方法,传入参数值为name
this(name);
//同理,调用本方法所属类的属性age等于传进来的参数age
this.age = age;
}
}
/*
总结:就是一个层层调用的关系,带一个参数的构造方法先调用无参构造方法,带两个参数的
构造方法又调用了带一个参数的构造方法。总之,调用无参构造方法就运行了一个,调用一个
参数的构造方法就运行两个,调用两个参数的构造方法就全部运行了!
*/
复制代码
作者:
庄生晓梦
时间:
2013-4-16 18:58
this关键字在构造函数中的使用:this.name = name;中this是指它所在函数所属对象的引用
this();代表没有参数的构造函数,默认存在,必须在构造函数的第一行;
this(name);代表有参数的构造函数,是自己定义的,必须在构造函数的第一行;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2