2.12、this关键字(重点)
this在Java中表示出以下的概念:
- 调用类中的属性:this.属性
- 调用类中的方法:this.方法()
- 调用类中的构造:this()
- 表示当前对象:this
范例:观察以下的题目
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Demo02 {
public static void main(String args[]) {
Person per = new Person("张三", 30);
System.out.println(per.getName()+ "-->"+ per.getAge());
}
};
通过this关键字调用本类中的其他构造方法,调用形式为:this()的形式
class Person {
private String name;
private int age;
public Person(){
System.out.println("新的对象产生了");
}
public Person(String name, int age) {
this(); //调用无参构造
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Demo02 {
public static void main(String args[]) {
Person per = new Person("张三", 30);
System.out.println(per.getName()+ "-->"+ per.getAge());
}
};
所有的构造方法应该是对象操作前最早调用的,所以使用this调用构造方法的时候所有代码必须放在构造方法的首行。
在使用this调用构造方法的时候至少有一个构造方法是没有this()调用的,而此构造方法将作为调用的出口,一般这个出口都会使用无参构造完成。
以上是this使用最多的两种情况,但是this有一个最重要的概念——表示当前对象。当前正在调用类中方法的对象,称为当前对象。
如下,分别用两种方法打印对象per1和per2
class Person{ // 定义Person类
public String getInfo(){ // 取得信息的方法
System.out.println("Person类 --> " + this) ; // 直接打印this
return null ; // 为了保证语法正确,返回null
}
}
public class Demo02 {
public static void main(String args[]) {
Person per1 = new Person() ; // 调用构造实例化对象
Person per2 = new Person() ; // 调用构造实例化对象
System.out.println("MAIN方法 --> " + per1) ; // 直接打印对象
per1.getInfo() ; // 当前调用getInfo()方法的对象是per1
System.out.println("MAIN方法 --> " + per2) ; // 直接打印对象
per2.getInfo() ; // 当前调用getInfo()方法的对象是per2
}
}
可见,用this调用的是当前对象,与直接per1,per2是一样的效果
转载请注明来源