this关键字

this关键字

一、this关键字引入

定义一个有参的构造方法:
class Person{
  int age;
  
  public Person(int a){
    age = a;
  }
  
  public void speak(){
    System.out.println("我今年"+age+"岁了!");
  }
  
  public class Test{
    public static void main (String[] args){
      Person person = new Person(18);
      person.speak();
    }
  }
}

存在问题:

  • 上述有参构造方法中,成员变量age和参数a之间赋值,语法没有任何问题,但是程序的可读性很差;
  • 如果参数也修改为age,那么就会导致成员变量和局部变量产生冲突;

于是:this关键字,它来了!

二、this关键字用法详解

2.1、this关键字调用成员变量

通过使用this关键字来解决冲突:即解决了成员变量和局部变量的命名重读,也提高了程序的可读性

class Person{
  int age;//成员变量
  
  public Person(int age){//局部变量
    this.age = age;//局部变量赋值给成员变量
  }
}

2.2、this关键字调用成员方法

通过使用this关键字,来调用自己的成员方法

class Person{
  public void openMounth(){
    
  }
  
  public void speak(){
    this.openMounth();
    openMounth();//这两种都可以,效果都一样
  }
}

2.3、this关键字调用构造方法

通过使用this关键字来调用构造方法--这个明白this关键字有这个功能就行

class Person{
    int age;

    public Person(){
        System.out.println("调用了无参的构造方法!");
    }

    public Person(int age){
        this();
        System.out.println("调用了有参的构造方法!");
    }
}

public class Test {
    public static void main(String[] args) {
        Person person = new Person(18);
    }
}
this关键字调用构造方法.png

注意:

  • 只能在构造方法中,使用this关键字来调用其他构造方法;不能在成员方法中使用;
  • 在构造方法中调用其他构造方法时,调用语句要放在第一行
  • 不能在一个类的两个构造方法中互相调用
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容