thisキーワードの役割

2889 ワード

役割:1、このクラスを呼び出す方法2、クラスの属性を表す3、thisを使用してこのクラスを呼び出すことができる構築方法4、thisは現在のオブジェクトを表す
1、本クラスの呼び出し方法
public class ThisDemo {

	public static void main(String[] args) {
		DemoThis d=new DemoThis(20);
		d.tellThis();
	}
}
class DemoThis{
	private int age;
	
	public DemoThis(int a) {
		age=a;
	}
	
	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	public void tellThis() {
		System.out.println("   :"+this.getAge());
	}
}
//  :   :20

このクラスのメソッドを呼び出すには、「this.メソッド名()」形式を使用します.
2、クラスの属性を表す
class DemoThis{
	private int age;
	public DemoThis(int age) {
		this.age=age;
	}
	//   
	/*public DemoThis(int a) {
		age=a;
	}*/
	..........
}

構造方法にこう書いてあると
public DemoThis(int age) {
		age=age;
	}

ここで「age=age」は構造方法のパラメータであり、「近接原則」によって原理を分析することができる.
3、thisを使用して本クラスの構築方法を呼び出すことができる
//      this()            。

public class ThisDemo {
	public static void main(String[] args) {
		//                
		// ,                  
		DemoThis d=new DemoThis(20);
	}
}

class DemoThis{
	private int age;
	public DemoThis(int age) {
		this();    //        
		this.age=age;
	}
	public DemoThis() {
		System.out.println("         this()  ");
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

this呼び出し構造メソッドは、構造メソッドの最初の行this呼び出し構造メソッドの場合にのみ、出口として構造メソッドを残す必要があります.すなわち、プログラムの少なくとも1つの構造メソッドがthis呼び出しを使用していない他の構造メソッドがあります.一般的には、非参照構造メソッドを出口とします.
4、thisは現在のオブジェクト(thisの最も重要な特徴)Java現在のオブジェクトを表します:クラス内のメソッドを現在呼び出しているオブジェクトを指します.今、張三、李四の二人がいるとしたら、今食事をしている人が張三であれば、「今食事をしている人」は張三です.比較対象が等しいか否かステップ1、まず比較対象アドレスが等しいか否か2、アドレスが等しくない場合は属性を比較する.
public class ThisDemo02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		PersonThis p1=new PersonThis("  ",16);
		PersonThis p2=new PersonThis("  ",16);
		if(p1.compare(p2)) {
			System.out.println("              ");
		}else {
			System.out.println("        ");
		}
	}

}
class PersonThis{
	private String name;
	private int age;
	
	public PersonThis(String name,int age) {
		this.name=name;
		this.age=age;
	}
	
	public boolean compare(PersonThis per) {
		PersonThis p1=this;	//           ——     compare(),this    
		PersonThis p2=per;	//        
		//         
		if(p1==p2) {	
			return true;
		}
		//          
		if(p1.name.equals(p2.name)&&p1.age==p2.age) {
			return true;
		}else {
			return false;
		}
	}
	
	
	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;
	}
	
}

プログラムに複数のオブジェクトが存在する可能性があります.この場合、thisは、現在のオブジェクトAがクラス内のメソッドfunction()を呼び出したと仮定し、このfunction()のthisが現在実行されているオブジェクトAであることを示します.