this关键字
构造方法是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回该类的对象,但这个对象并不是完全由构造器负责创建。
创建一个对象分为如下四步:
1. 分配对象空间,并将对象成员变量初始化为0或空
2. 执行属性值的显式初始化
3. 执行构造方法
4. 返回对象的地址给相关的变量
this的本质就是“创建好的对象的地址”! 由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象”
this最常的用法:
1. 构造方法中,this总是指向正要初始化的对象
2. 使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。
3. this不能用于static方法中。
this代表“当前对象”示例
public class Test5 {
int id;
String name;
String pwd;
public Test5() {
}
public Test5(int id,String name) {
System.out.println("正在初始化已经创建好的对象:"+this);
this.id=id;
this.name=name;
}
public void login() {
System.out.println(this.name+",要登录");
}
public static void main(String[] args) {
Test5 u3=new Test5(101,"代止兮");
System.out.println("打印代止兮对象:"+u3);
u3.login();
}
}
this()调用重载构造方法
public class TestThis {
int a,b,c;
TestThis(){
}
TestThis(int a,int b){
this();//调用无参的构造方法,并且必须位于第一行
a=a; //这里都是指的局部变量而不是成员变量
this.a=a; //用this来区分局部变量和成员变量
this.b=b;
}
TestThis(int a,int b,int c){
this(a,b); //调用带参的构造方法,并且必须位于第一行
this.c=c;
}
void sing() {
}
void eat() {
this.sing(); //调用本类的sing()
System.out.println("你妈妈喊你回家吃饭!");
}
public static void main(String [] args) {
TestThis hi=new TestThis(2,3);
hi.eat();
}
}
构造方法的重载
构造方法重载(创建不同用户对象)
如果方法构造中形参名与属性名相同时,需要使用this关键字区分属性与形参。
public class User {
int id;
String name;
String pwd;
public User() {
}
public User(int id,String name) {
super();
this.id=id;
this.name=name;
}
public User(int id,String name,String pwd) {
this.id=id;
this.name=name;
this.pwd=pwd;
}
public static void main(String[] args) {
User u1=new User();
User u2=new User(101,"止小兮");
User u3=new User(100,"代止兮","123456");
}
}