关键字—this
1.this是什么?
-
在Java中,this关键字比较难理解,它的作用和其词义很接近。
- 它在方法内部使用,即这个方法所属对象的引用;
- 它在构造器内部使用,表示该构造器正在初始化的对象。
-
this 可以调用类的属性、方法和构造器
-
什么时候使用this关键字呢?
- 当在方法内需要用到调用该方法的对象时,就用this。 具体的:我们可以用this来区分属性和局部变量。 比如:this.name = name;
2.应用场景
我们在声明一个属性对应的setXxx方法时,通过形参给对应的属性赋值。如果形参名和属性名同名了,那么该如何方法内区分这两个变量呢?
解决方案:使用this。具体来讲,使用this修饰的变量,表示的是属性。没有用this修饰的,表示的是形参。
class Person{ // 定义Person类
private String name ;
private int age ;
public Person(String name,int age){
this.name = name ;
this.age = age ; }
public void getInfo(){
System.out.println("姓名:" + name) ;
this.speak();
}
public void speak(){
System.out.println(“年龄:” + this.age);
}
}
3.this可以调用的结构:成员变量、方法、构造器
调用构造器
class Person{ // 定义Person类
private String name ;
private int age ;
public Person(){ // 无参构造器
System.out.println("新对象实例化") ;
}
public Person(String name){
this(); // 调用本类中的无参构造器
this.name = name ;
}
public Person(String name,int age){
this(name) ; // 调用有一个参数的构造器
this.age = age;
}
public String getInfo(){
return "姓名:" + name + ",年龄:" + age ;
}
}
4.this的理解:
当前对象(在方法中调用时)或当前正在创建的对象(在构造器中调用时)
注意
- 在任意方法或构造器内,如 果使用当前类的成员变量或成 员方法可以在其前面添加this, 增强程序的阅读性。不过,通 常我们都习惯省略this。
- 当形参与成员变量同名时, 如果在方法内或构造器内需要 使用成员变量,必须添加this来 表明该变量是类的成员变量
- 使用this访问属性和方法时, 如果在本类中未找到,会从父 类中查找
- this可以作为一个类中 构造器相互调用的特殊 格式
- 可以在类的构造器中使用"this(形参列表)"的方式,调用本类中重载的其 他的构造器!
- 明确:构造器中不能通过"this(形参列表)"的方式调用自身构造器
- 如果一个类中声明了n个构造器,则最多有 n - 1个构造器中使用了 "this(形参列表)"
- "this(形参列表)"必须声明在类的构造器的首行!
- 在类的一个构造器中,最多只能声明一个"this(形参列表)"
可以在类的构造器中使用"this(形参列表)"的方式,调用本类中重载的其 他的构造器! 明确:构造器中不能通过"this(形参列表)"的方式调用自身构造器 如果一个类中声明了n个构造器,则最多有 n - 1个构造器中使用了 "this(形参列表)" "this(形参列表)"必须声明在类的构造器的首行! 在类的一个构造器中,最多只能声明一个"this(形参列表)"