this关键字
# 前言
前面我们学习了构造器,接下来学习关键字。
# this是什么?
this
其实是一个指针。
在Java中,this
关键字比较难理解,它的作用和其词义很接近。可以理解为==当前对象==或==当前正在创建的对象==。
- 它在方法内部使用,即这个方法所属对象的引用;
- 它在构造器内部使用,表示该构造器正在初始化的对象。
作用
this 可以调用类的属性、方法和构造器
# 为什么要有this
什么时候使用this关键字呢?
当形参与成员变量同名时,如果在方法内或构造器内需要使用成员变量,必须添加this
来表明该变量是类的成员变量。
当在方法内需要用到调用该方法的对象时,就用this
。
具体的:我们可以用this来区分==属性==和==局部变量==。
- 在任意方法或构造器内,如果使用当前类的成员变量或成员方法可以在其前面添加this,==增强程序的阅读性==。通常情况下,我们都选择省略
this
。 - ==使用this访问属性和方法时,如果在本类中未找到,会从父类中查找==
使用this,调用属性、方法
package constructors;
public class Person {
private String name;
private int age;
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 使用this
调用本类的构造器
this
==可以==作为一个类中构造器相互调用的特殊格式
package constructors;
public class Person {
private String name;
private int age;
/**
* 无参构造器
*/
public Person() {
System.out.println("调用了无参构造器");
}
public Person(String name) {
this();//调用本类中的无参构造器
System.out.println("调用了带name的构造器");
this.name = name;
}
public Person(String name, int age) {
this(name); // 调用有一个参数的构造器
System.out.println("调用了带name和age的构造器");
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
注意:
- 在类的一个构造器中,可以在类的构造器中使用"
this(形参列表)
"的方式,调用本类中重载的其他的构造器! - 在类的一个构造器中,明确:构造器中不能通过"
this(形参列表)
"的方式调用自身构造器 - 在类的一个构造器中,如果一个类中声明了n个构造器,则最多有n -1个构造器中使用了"
this(形参列表)
" - 在类的一个构造器中,"
this(形参列表)
"必须声明在类的构造器的首行! - 在类的一个构造器中,最多只能声明一个"
this(形参列表)
"
帮我改善此页面 (opens new window)
上次更新: 2020/12/18, 12:50:58