Java的this是干什么的
时间: 2023-10-30 15:08:50 浏览: 37
Java中的this关键字代表当前对象,可以用于以下几个方面:
1. 在构造方法中调用另一个构造方法
在一个类中有多个构造方法时,可以使用this关键字调用其他构造方法来避免代码重复。例如:
```
public class Person {
private String name;
private int age;
public Person() {
this("Unknown", 0); // 调用其他构造方法
}
public Person(String name) {
this(name, 0); // 调用其他构造方法
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
```
2. 区分实例变量和局部变量
在方法中,如果存在和实例变量同名的局部变量,可以使用this关键字来区分二者。例如:
```
public class Person {
private String name;
public void setName(String name) {
this.name = name; // 使用this区分实例变量和局部变量
}
}
```
3. 返回当前对象
在方法中,可以使用this关键字返回当前对象。例如:
```
public class Person {
private String name;
public Person withName(String name) {
this.name = name;
return this; // 返回当前对象
}
}
```
这样,我们就可以使用链式调用的方式来设置对象属性:
```
Person person = new Person().withName("Tom").withAge(18);
```
4. 在内部类中使用外部类对象
在内部类中,可以使用this关键字访问外部类对象。例如:
```
public class Outer {
private String name = "Outer";
public void hello() {
Inner inner = new Inner();
inner.sayHello();
}
public class Inner {
private String name = "Inner";
public void sayHello() {
System.out.println("Outer name is " + Outer.this.name); // 使用this访问外部类对象
System.out.println("Inner name is " + this.name);
}
}
}
```
这样,我们就可以在内部类中访问外部类对象的属性和方法了。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)