Menu
Coddy logo textTech

Ключевое слово this

Часть раздела Объектно-ориентированное программирование путешествия по Java на Coddy — урок 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 всегда указывает на текущий объект. Это важно, когда имена параметров совпадают с именами полей, что предотвращает путаницу и ошибки.

challenge icon

Задание

Средне

Завершите класс Person, используя ключевое слово this для разграничения полей и параметров:

  • Конструктор, который использует this для присвоения параметров полям
  • Геттеры, использующие this для доступа к полям
  • Метод getDescription(), возвращающий "<name>, age <age>, from <city>"

Шпаргалка

Ключевое слово this ссылается на текущий экземпляр класса и позволяет различать поля и параметры с одинаковыми именами.

Без this параметр затеняет поле:

public Person(String name) {
    name = name;  // Присваивает параметр самому себе!
}

Использование this для правильного присвоения значений:

public Person(String name) {
    this.name = name;  // Присваивает параметр полю
}

Использование this в методах-геттерах:

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";
    }
}

Попробуйте сами

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Проверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование