Menu
CoddyTech

this 关键字

本课属于 Coddy Java 学习旅程的“面向对象编程”单元。第 4 课,共 87 课。

this 关键字指的是类的当前实例。它用于区分同名的字段和参数。

如果没有 this,参数会遮蔽字段

public class Person {
    private String name;
    
    public Person(String name) {
        name = name;  // 把参数赋值给了它自己!
    }
}

使用 this 正确赋值

public class Person {
    private String name;
    
    public Person(String name) {
        this.name = name;  // 将参数赋值给字段
    }
    
    public String getName() {
        return this.name;
    }
}

在方法中使用 this

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getDescription() {
        return this.name + " is " + this.age + " years old";
    }
}

this 关键字始终指向当前对象。当参数名与字段名相同时,它至关重要,可以避免混淆和 bug。

challenge icon

挑战

中等

使用 this 关键字区分字段和参数,完成 Person 类:

  • 编写一个构造函数,使用 this 将参数赋值给字段
  • 编写 Getter 方法,使用 this 访问字段
  • 编写一个 getDescription() 方法,返回 "<name>, age <age>, from <city>"

亲手试试

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int age = Integer.parseInt(scanner.nextLine());
        String city = scanner.nextLine();
        
        Person person = new Person(name, age, city);
        
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
        System.out.println("City: " + person.getCity());
        System.out.println(person.getDescription());
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: Java 在线编译器