看一段代码:(Demo112.java),先了解为什么要使用this。
/* this的必要性*/public class Demo112{ public static void main(String []args){ Dog dog1=new Dog(2,"大黄"); Person p1=new Person(dog1,23,"刚子"); Person p2=new Person(dog1,24,"小龙"); p1.showInfo(); p1.dog.showInfo(); }}//定义一个人类class Person{ //成员变量 int age; String name; Dog dog;//引用类型
//人类的构造函数 public Person(Dog dog,int age,String name){ //如此书写可读性很差,不知道两个age哪个指参数列表中的,哪个指成员变量中的。 //age=age; //name=name;
//引入this,让它指向当前对象。 this.age=age; //this.age指定的是成员变量age this.name=name; //this.name指定的是成员变量name this.dog=dog; } //显示人名字 public void showInfo(){ System.out.println("人名是:"+this.name); }}class Dog{ int age; String name; public Dog(int age,String name){ this.age=age; this.name=name; } //显示狗名 public void showInfo(){ System.out.println("狗名叫"+this.name); }}
从案例中看出,引入thsi是必要的。this是属于一个对象,不属于类的,但它不能在类定义的外部使用,只能在类定义的方法中使用。java虚拟机会给每个对象分配this,代表当前对象。