this关键字
1. 指示隐式参数(本类对象的引用)
this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用,这一说法是《Java编程思想》的说法,但不要理解成this关键字仅限于调用方法的引用,this关键字同样可以调用类的域。
class Preson{
private String name;
private int age;
//setter 和getter略
}
public Person(String name,int age){//构造方法
this.name = name;
this.age = age;
}
为阅读代码时根据参数名直接就能了解参数的含义,将参数明设定为和实例域相同的名字,this这里指代就是Person类对象的引用。
this的用法和其他对象的引用没什么区别。我们要注意的是在同一类的方法中调用其它方法不必加this,直接调用即可,编译器会自动加上。
class Person {
private String name;
private int age;
//setter、getter略
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void show(){
System.out.println("其他方法");
}
public void method(){
System.out.println("姓名:"+this.name+"年龄:"+this.age);
show();
this.show();//等价于show()
}
}
public class ThisDemo
{
public static void main(String[] args){
Person p = new Person("小明",18);
p.method();
}
}
2. 在构造器中调用构造器
通常一个类可以写多个构造方法,如果构造方法的第一个语句为this(…);括号里为参数列表,不同的参数形式,对应不同的构造方法的调用,这样我们就可以简化公共构造器代码部分。
class Person {
private String name;
private int age;
private double height;
//setter、getter略
public Person(int age){
this.age = age;
}
public Person(String name){
this.name = name;
}
public Person(String name,int age){
this(name);
this.age = age;
}
public Person(String name,int age,double height){
this(age);
//this(name);只能调用一个,只能在第一行
this.name = name;
this.height = height;
}
public void show(){
// this(11);只能在构造方法中调用,不能在其它方法中调用
System.out.println("其他方法");
}
public void method(){
System.out.println("姓名:"+this.name+"年龄:"+this.age);
show();
}
}
public class ThisDemo
{
public static void main(String[] args){
Person p = new Person("小明",18);
p.method();
}
}
注意事项
1.this调用本类构造方法的时候,语句只允许出现在首行,也就是只能调用一个,这两个必须同时满足,否则编译器会报错
2.除构造外,不能在其他方法中调用构造方法