このキーワードを再認識


1、Catクラスを定義する.
public class Cat {
	private String name;
	
	private String color;

	public Cat(String name, String color) {
		this.name = name;
		this.color = color;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	
}

 
2、テストクラス
public class TestCat {

	public static void main(String[] args) {
		
		Cat cat1 = new Cat(" "," ");
		Cat cat2 = new Cat(" "," ");

		System.out.println(cat1.getName()+": "+cat1.getColor());
		System.out.println(cat2.getName()+": "+cat2.getColor());
	}

}

 
 
導入問題:テストクラスではnewは2つのCatクラスの例を示し、cat 1とcat 2を用いて参照する.cat 1とcat 2が参照するオブジェクトは、それぞれのドメインメンバー(nameとcolor)を持つ.ただし、メソッドメンバーはメモリに1つしかありません.メソッドgetName()またはgetColor()を呼び出すと、cat 1が参照するオブジェクトとcat 2が参照するオブジェクトのどちらが返されるかをプログラムはどのように知っていますか?
 
≪困惑|Un惑|emdw≫:メソッド・メンバーを呼び出すために参照名を使用すると、オブジェクトの参照がメソッド・メンバーに通知され、メソッドに記述された各メンバーまたはメンバーにはthis参照名が隠されます.getName()メソッドを呼び出すと、次のようになります.
	public String getName() {
		return this.name;
	}

したがって、cat 1を使用してgetName()メソッドを呼び出すと、thisはcat 1が参照するオブジェクトを参照します.同様に、cat 2を使用してgetName()メソッドを呼び出す場合、thisが参照するのはcat 2が参照するオブジェクトである.これにより、どのオブジェクトのデータを正しく返すことができますか?