Java的知识点9——this关键字

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");
	}
}

猜你喜欢

转载自blog.csdn.net/qq_39368007/article/details/83241959