この3つの使い方の詳細

2337 ワード

public class ThisTest2 {
	public static void main(String[] args) {
                //   this         
		SelfObject aaa = new SelfObject();
		aaa.test();
	}
}

/**
*一、thisを使用してメンバー変数を参照する
*クラスのメソッドまたは構築メソッドの内部では、「this.メンバー変数名」を使用してメンバー変数を参照できます.
*省略できる場合もあれば、省略できない場合もあります
 */
class MemberVariable {
	private int a;
	public MemberVariable(int a) {
		this.a = a;
	}
	public int getA() {
		return a;
	}
	public void setA(int a) {
		this.a = a;
	}
}

注記:
このセグメントコードの構造方法とseta方法の内部では、いずれもthisを用いる.a参照クラスのメンバー変数a
構造方法においてもseta方法においても、aという変数が2つ含まれているため、1つはパラメータaであり、もう1つはメンバー変数aである.
Java言語の変数役割ドメインに従って、パラメータaの役割範囲は構築方法または方法の内部にあり、メンバー変数aの役割範囲はクラス全体の内部である.
このように構造方法とseta方法の内部には変数aの衝突が存在する.
Java言語は、変数の作用範囲が重なると、作用域の小さい変数が作用域の大きい変数を覆うことを規定する.したがって、構造方法とseta方法の内部では、パラメータaが機能する
このようにメンバー変数aにアクセスする必要がある場合はthisを用いて参照する必要がある.もちろん、変数名が重複しない場合は、thisは省略できます.
しかし、コードの可読性を向上させるためには、パラメータの名前とメンバー変数の名前を一致させるのが一般的であるため、thisの使用頻度は仕様のコード内部に多くあるはずです.
/**
*二、thisキーワードを使用して構築方法を参照する
 */
class Constructor {
	 int a ;
	 public Constructor() {
		this(0);
	}
	 public Constructor(int a) {
		this.a = a;
	}
 }

注記:
非パラメトリック構築メソッドの内部で、thisを使用して別のパラメトリック構築メソッドが呼び出されます.0は必要に応じて渡されるパラメータの値です.
1つのクラス内部の構造方法が比較的多い場合,1つの構造方法の内部機能コードのみを書くことができる.
その後、他の構築方法は、その構築方法を呼び出すことによって実現される.
これにより、すべての構造方法が統一されることを保証し、コードの重複を低減することができる.
注:thisキーを使用して構築メソッドの内部で他の構築メソッドを呼び出す場合は、最初の行に書く必要があります.1つのみ呼び出され、1回のみ構築メソッドが呼び出されます.
/**
*三、thisを使用して自身のオブジェクトを表します(デフォルト)
  */
class SelfObject {
	 // SelfObject object;
	  public SelfObject() {
		//object = this;
	}
	  public void test() {
		System.out.println(this);
	}
  }

注記:
リファレンスオブジェクトobjectを作成し、構築方法の内部でオブジェクトthisの値をobjectに割り当てます.
testメソッドの内部で、オブジェクトthisの内容を出力します.ここでthisはすべて自分のタイプのオブジェクトを表します.
/**
*四、メンバーの参照方法
*クラスの内部で、メンバーメソッド間で相互に呼び出される場合は、「this.メソッド名(パラメータ)」を使用して参照できます.
*このような引用はすべてこのように省略することができて、あってもなくてもいいです
    */
 
結論:
  1.関数ではなく参照クラスを表すメンバー変数
注:関数パラメータとメンバー変数は同じ名前で区別されます.
  2.コンストラクションメソッドで他のコンストラクタ(コンストラクションメソッド)を参照する
注:最初の行では、1つのコンストラクションメソッドのみが参照されます.
  3.現在のオブジェクトへの参照を表すthisキーは、自身のクラスを表すオブジェクトです.
  4.メンバーメソッドの参照
注意:thisはstaticメソッドでは使用できません