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 出了两个Cat类的实例,并使用cat1与cat2来引用. cat1与cat2所引用的对象会拥有各自的域成员,即(name和color). 但是方法成员在内存中只有一份,当调用方法getName()或getColor()时,程序是如何知道它们所返回的值是cat1所引用的对象还是cat2所引用的对象?
解惑:当使用引用名称来调用方法成员时,程序会将对象的引用告知方法成员,而在方法中所编写的每一个或成员会隐含一个this引用名称。当调用getName()方法时,相当于执行:
public String getName() {
return this.name;
}
因此,当使用cat1调用getName()方法时,this所引用的就是cat1所引用的对象;同理,当使用cat2调用getName()方法时,this所引用的就是cat2所引用的对象. 这样就可以正确地返回哪一个对象的数据!