面向对象--this关键字

this:

看上去,是用于区分局部变量和成员变量同名情况。


this代表的是什么?

this就代表本类的对象。也即是:this代表它所在函数所属对象的引用。简单说:哪个对象在调用this所在函数,this就代表哪个对象。

对于下面一个程序来说:

主函数声明一个对象p1,然后p1调用构造函数Person2(String name){},此时this指代的就是p1。

public class Demo20 {
	
	public static void main(String[] args) {
		Person2 p1=new Person2("WGS");
	}
}

class Person2{
	private String name;
	private int age;
	
	//构造函数
	Person2(String name){
		this.name=name;
		System.out.println("B: name="+name+"   "+"age="+age);
	}

}

this的应用:

当定义类中的功能时,该函数内部要用到该函数的对象时,这时用this来表示这个对象。但凡本类功能内部使用了本类对象,都用this表示。

/*
 * 需求:给人定义一个用于比较年龄是否相同的功能,也就是是否是同龄人。
 */
public class Demo20 {
	
	public static void main(String[] args) {
		Person2 p1=new Person2(20);
		Person2 p2=new Person2(25);
		boolean b=p1.compare(p2);
		System.out.println(b);
	}
}

class Person2{
	private String name;
	private int age;
	
	//构造函数
	Person2(int age){
		this.age=age;//在该程序中指代的是p1
	}
	
	public boolean compare(Person2 p){
		return this.age==p.age;
	}

}

输出结果为:false


this语句:用于构造函数之间进行互相调用。

this语句只能定义在构造函数的第一行,因为初始化要先执行。

public class Demo20 {
	
	public static void main(String[] args) {
		Person2 p1=new Person2("WGS",22);		
	}
}

class Person2{
	private String name;
	private int age;
	
	//构造函数
	Person2(){
		
	}
	Person2(String name){
		this.name=name;//this也是指代p1
	}
	Person2(String name,int age){
		this(name);//这句语句必须放在第一行,因为初始化要先执行。再者它先调用上面的构造函数,
//		this.name=name;	
		this.age=age;//在该程序中指代的是p1
	}
	
	public boolean compare(Person2 p){
		return this.age==p.age;
	}

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值