TechHype
Вопросы с собеседований: что такое this в Kotlin
В Kotlin, ключевое слово this используется для ссылки на текущий экземпляр класса.
В Kotlin, ключевое слово this используется для ссылки на текущий экземпляр класса. Оно может использоваться в следующих случаях:
- В членах класса,
thisссылается на текущий экземпляр этого класса. - В расширениях функций или функциях с получателем,
thisссылается на приемник, переданный в качестве параметра. - В квалифицированных выражениях
this,thisссылается на экземпляр внешнего класса.
В членах класса
В членах класса, this используется для доступа к свойствам и методам текущего экземпляра класса. Например, следующий код определяет класс Person с свойством name и методом sayHello():
class Person(val name: String) {
fun sayHello() {
println("Hello, my name is ${this.name}")
}
}
В этом коде, this.name ссылается на свойство name текущего экземпляра класса Person.
В расширениях функций или функциях с ресивером
Расширения функций и функции с получателем позволяют добавлять новые функции или методы существующим классам. В этих случаях, this ссылается на приемник, переданный в качестве параметра. Например, следующий код определяет расширение функции printName() для класса Person:
fun Person.printName() {
println(this.name)
}
В этом коде, this ссылается на экземпляр класса Person, который был передан в качестве параметра функции printName().
В квалифицированных выражениях this
Квалифицированные выражения this используются для доступа к экземпляру внешнего класса из внутреннего класса или функции. Для этого, this дополняется именем внешнего класса. Например, следующий код определяет вложенный класс Inner в классе Outer:
class Outer {
class Inner {
fun foo() {
println(this@Outer.name)
}
}
val name = "Outer"
}
В этом коде, this@Outer ссылается на экземпляр класса Outer.
Вот несколько примеров использования ключевого слова this в Kotlin:
// В членах класса
class Person(val name: String) {
fun sayHello() {
println("Hello, my name is ${this.name}")
}
}
val person = Person("John Doe")
person.sayHello() // Выведет "Hello, my name is John Doe"
// В расширениях функций или функциях с получателем
fun Person.printName() {
println(this.name)
}
person.printName() // Выведет "John Doe"
// В квалифицированных выражениях this
class Outer {
class Inner {
fun foo() {
println(this@Outer.name)
}
}
val name = "Outer"
}
val outer = Outer()
val inner = outer.Inner()
inner.foo() // Выведет "Outer"
Дополнительно
-
Аналитика магазинов4 недели назад
Мобильный рынок Ближнего Востока: исследование Bidease и Sensor Tower выявляет драйверы роста
-
Видео и подкасты для разработчиков3 недели назад
Разбор кода: iOS-приложение для управления личными финансами на Swift. Часть 1
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2025.47
-
Разработка4 недели назад
100 уроков о том, как я довёл своё приложение до продажи за семизначную сумму

