1..............
this:看上去,是用于区分局部变量和成员变量同名情况。
this为什么可以解决这个问题?
this到底代表的是什么呢?
this:就代表本类的对象,到底代表哪一个呢?
this代表它所在函数所属对象的引用。
简单说:哪个对象在调用this所在的函数,this就代表哪个对象。
this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。
但凡本类功能内部使用了了本类对象,都用this表示。
class Person
{
private String name;
private int age;
Person(int age)
{
this.age = age; //this.指本类中的age
}
Person(String name)
{
this.name = name; //this.指本类中的name
}
Person(String name,int age)
{
this.name = name; //this.指本类中的name
this.age = age; //this.指本类中的age
}
public void speak()
{
System.out.println("name="+this.name+"...age="+this.age); //this.指本类中的name , age
this.show(); //this.指本类中的show方法
}
public void show()
{
System.out.println(this.name); //this.指本类中的name
}
/*
需求:给人定义一个用于比较年龄是否相同的功能。也就是是否是同龄人。
*/
public boolean compare(Person p)
{
return this.age==p.age; //this.指本类中的age
}
}
class PersonDemo3
{
public static void main(String[] args)
{
Person p1 = new Person(20); //this.指对象p1中的name,age.
Person p2 = new Person(25); //this.指对象p2中的name,age.
boolean b = p1.compare(p2);
System.out.println(b);
Person p = new Person("lisi");
p.speak();
p1.speak();
}
}
2................................
this语句 :用于构造函数之间进行互相调用。
this语句只能定义在构造函数的第一行。因为初始化要先执行。
class Person
{
private String name;
private int age;
{
System.out.println("code run");
}
Person()
{
//this("hah");
System.out.println("person run");
}
Person(String name)
{
//this();
this.name =name;
}
Person(String name,int age)
{
//this(name);
//this.name = name;
this.age = age;
}
}
class PersonDemo4
{
public static void main(String[] args)
{
new Person();
//Person p = new Person("lisi",30);
//Person p1 = new Person("lisi2",36);
}
}
|