在Java中this关键字

时间:2020-02-23 14:35:37  来源:igfitidea点击:

Java中的 this关键字用于指代当前对象或者类实例。
它可以在构造函数中使用,调用任何其他重载的构造函数,但 this关键字应该是构造函数中的第一个语句。

this关键字可以用于实例变量

this关键字可用于指代类的实例变量。

package org.igi.theitroad;
 
public class Employee {
 
	String name;
	int age;
	
	public Employee(String name,int age)
	{
		this.name=name;
		this.age=age;		
	}
	
	public void workOnAssignment()
	{
		//Working on assignment
	}
	
	public String getName() {
		return name;
	}
 
	public void setName(String name) {
		this.name = name;
	}
 
	public int getAge() {
		return age;
	}
 
	public void setAge(int age) {
		this.age = age;
	}
 
	public static void main(String args[])
	{
		Employee e1=new Employee("John",20);
		System.out.println("Employee's name : "+e1.getName());
		System.out.println("Employee's age : "+e1.getAge());
	}
}

运行上面的程序时,我们将得到以下输出:

Employee's name : John
Employee's age : 20

正如我们所看到的,我们使用 this关键字在构造函数中使用 this关键字设置实例变量的值。

this关键字可用于调用重载的构造函数

如果要调用同一类的重载(overloading)构造函数,则可以使用 this关键字来执行此操作。
例如:

package org.igi.theitroad;
 
public class Employee {
 
	String name;
	int age;
	
	public Employee() {
		System.out.println("Calling No arg constructor");
	}
	
	public Employee(String name,int age)
	{
		this();
		System.out.println("Calling Parameterized constructor");	
		this.name=name;
		this.age=age;		
	}
	
	public void workOnAssignment()
	{
		//Working on assignment
	}
	
	public String getName() {
		return name;
	}
 
	public void setName(String name) {
		this.name = name;
	}
 
	public int getAge() {
		return age;
	}
 
	public void setAge(int age) {
		this.age = age;
	}
 
	public static void main(String args[])
	{
		Employee e1=new Employee("John",20);
		System.out.println("Employee's name : "+e1.getName());
		System.out.println("Employee's age : "+e1.getAge());
	}
}

请注意,用于调用另一个构造函数的this关键字应该是该构造函数中的第一个语句。

this关键字可以使用类的返回对象

package org.igi.theitroad;
 
public class Employee {
 
	String name;
	int age;
	
	public Employee(String name,int age)
	{
		this.name=name;
		this.age=age;		
	}
	
	public void workOnAssignment()
	{
		//Working on assignment
	}
	
	public String getName() {
		return name;
	}
 
	public void setName(String name) {
		this.name = name;
	}
 
	public int getAge() {
		return age;
	}
 
	public void setAge(int age) {
		this.age = age;
	}
 
	public Employee getEmployee()
	{
		return this;
	}
	public static void main(String args[])
	{
		Employee e1=new Employee("John",20);
		Employee e1Copy=e1.getEmployee();
		System.out.println("Employee's name : "+e1Copy.getName());
		System.out.println("Employee's age : "+e1Copy.getAge());
	}
}