Java基本语法-面向对象(七)-this的使用

142 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情

关键字:this的使用

this是什么?

  • 在Java中,this关键字比较理解,它的作用和其词义很接近。
  • 它在方法内部使用,即这个方法所属对象的引用;
  • 它在构造器内部使用,表示该构造器正在初始化的对象。
  • this 可以调用类的属性、方法和构造器

什么时候使用this关键字呢?

  • 当在方法内需要用到调用该方法的对象时,就用this。
  • 具体的:我们可以用this来区分属性和局部变量。
  • 比如:this.name = name;

使用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);
}
}
  1. 在任意方法或构造器内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性。不过,通常我们都习惯省略this。
  2. 当形参与成员变量同名时,如果在方法内或构造器内需要使用成员变量,必须添加this来表明该变量是类的成员变量 3.使用this访问属性和方法时,如果在本类中未找到,会从父类中查找
class Person{ // 定义Person类
String name;
Person(String name){
this.name = name;}
public void getInfo(){
System.out.println("Person类 --> " + this.name) ; }
public boolean compare(Person p){
return this.name==p.name;
} }
public class PersonTest{
public static void main(String args[]){
Person per1 = new Person("张三") ;
Person per2 = new Person("李四") ;
per1.getInfo() ; // 当前调用getInfo()方法的对象是per1
per2.getInfo() ; // 当前调用getInfo()方法的对象是per2
boolean b = per1.compare(per2);
} }
  • 当前正在操作本方法的对象称为当前对象。

 使用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 ;
}
  • this可以作为一个类中构造器相互调用的特殊格式

注意:

  • 可以在类的构造器中使用"this(形参列表)"的方式,调用本类中重载的其他的构造器!
  • 明确:构造器中不能通过"this(形参列表)"的方式调用自身构造器
  • 如果一个类中声明了n个构造器,则最多有 n - 1个构造器中使用了"this(形参列表)"
  • "this(形参列表)"必须声明在类的构造器的首行!
  • 在类的一个构造器中,最多只能声明一个"this(形参列表)"