this只能在类中的非 静态方法 中使用
this
- 引用本类中的成员属性或方法。
public class Cat {
private String name;
public void eat () {
// this引用本类的成员属性
System.out.println(this.name);
}
public void drink () {
// this引用本类中的方法
this.eat();
}
}
- 当方法的 形参 和成员属性一致时,用this区分。通常在set方法里。
private String name;
public void setName(String name) {
this.name = name;
}
- 指代当前类对象。
private String name;
public Cat eat(String name) {
this.name = name;
return this;
}
public static void main(String[] args) {
Cat cat1 = new Cat();
Cat cat2 = cat1.eat("鱼");
System.out.println(cat2.name);
// 鱼
}
this()
- 指代当前类的无参构造函数。
- 构造函数必须放在第一行,且只能存在一个。
private String name;
private int age;
public Cat() {
System.out.println("cat无参构造");
}
public Cat(String name) {
// 必须放在第一行
this();
System.out.println("cat有参构造 " + name);
}
public Cat(String name, int age) {
// 只能存在一个this()
this(name);
System.out.println("cat有参构造" + name + " " + age);
}
public static void main(String[] args) {
new Cat();
// cat无参构造
new Cat("小白");
// cat无参构造
// cat有参构造 小白
new Cat("小橘",3);
// cat无参构造
// cat有参构造 小橘
// cat有参构造小橘 3
}