详解面向对象关键字-this

184 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

this关键字的含义:

1、代表当前对象

2、指代所在函数所属对象的引用,哪个对象调用了this所在的函数,this就指代哪个对象

this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。

this的使用方法:

  • this调用本类的属性;

  • this调用本类的构造方法;

    当一个类的构造方法有多个,并且它们之间有交集的话,就可以使用 this 关键字来调用不同的构造方法,从而减少代码量。

  • this调用本类的其他方法;

    在程序中产生二义性之处,应使用this来指明当前对象;在普通方法中,this总是指向调用该方法的对象。在构造方法中,this总是指向正要初始化的对象。

package com.java.yanf.base;

import lombok.Data;

@Data
public class Person {
    private String name;
    private int age;

    //无参构造函数
    public Person() {
    }

    public Person(String name) {
        //成员变量和局部变量重名,可以用关键字this区分
        this.name = name;
    }

    public Person(String name, int age) {
        //this调用本类的构造方法,必须放在第一行,因为初始化动作要先执行,等效于this.name = name;
        this(name);
        this.age = age;
    }

    public void say() {
        //this调用本类的成员属性
        System.out.println(this.name + ":" + this.age);
    }

}

上面的Person类有两个成员变量,分别是 age 和 name。使用有参构造函数时,当参数名和成员变量的名字相同时,需要使用 this 关键字消除歧义:上面代码中的 this.age 是指成员变量,age 是指构造方法的参数。

总结:

  • 构造方法相互调用时,相关代码必须放在调用构造方法的第一行,因为初始化代码必须先执行。
  • this() 只能写在构造方法中,不能写在其他普通方法中。
  • this不能放在static的类中使用。