Menu
Coddy logo textTech

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

Часть раздела Объектно-ориентированное программирование путешествия по Dart на Coddy — урок 5 из 110.

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

Вот пример класса с методами, использующими this:

class Car {
  String color = '';
  String model = '';

  void honk() {
    print('Beep beep!');
  }

  void describe() {
    print('I am a ${this.color} ${this.model}');
  }
}

Внутри describe(), this.color и this.model относятся к переменным этого конкретного объекта.

Создайте объект автомобиля и задайте его переменные:

Car myCar = Car();
myCar.color = 'Red';
myCar.model = 'Sedan';

Вызовите методы:

myCar.honk();
myCar.describe();

Вывод:

Beep beep!
I am a Red Sedan

this особенно полезно, когда параметр метода имеет то же имя, что и переменная экземпляра:

class Car {
  String color = '';

  void setColor(String color) {
    this.color = color; // this.color = переменная экземпляра, color = параметр
  }
}

Без this Dart не знал бы, относится ли color к параметру или к переменной экземпляра. Ключевой момент: this всегда ссылается на конкретный объект, который в данный момент вызывает метод.

challenge icon

Задание

Легко

Дополните класс Car в car.dart, добавив метод с именем displayInfo, который использует ключевое слово this для вывода года, марки и модели автомобиля в формате:

'This car is a [year] [make] [model]'

  • car.dart: Содержит класс Car, в который вы добавите метод displayInfo
  • driver.dart: Устанавливает значения переменных для объекта car и вызывает displayInfo() (заблокировано)

Шпаргалка

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

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

class Car {
  String color = '';
  String model = '';

  void describe() {
    print('I am a ${this.color} ${this.model}');
  }
}

this особенно полезно, когда параметр метода имеет то же имя, что и переменная экземпляра:

class Car {
  String color = '';

  void setColor(String color) {
    this.color = color; // this.color = переменная экземпляра, color = параметр
  }
}

Без this Dart не знал бы, относится ли color к параметру или к переменной экземпляра.

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

import 'car.dart';

void main() {
  Car myCar = Car();
  myCar.year = '2020';
  myCar.make = 'Toyota';
  myCar.model = 'Corolla';
  myCar.displayInfo();
}
quiz iconПроверьте себя

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

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