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
:
xxxxxxxxxx
fun Person.printName() {
println(this.name)
}
В этом коде, this
ссылается на экземпляр класса Person
, который был передан в качестве параметра функции printName()
.
В квалифицированных выражениях this
Квалифицированные выражения this
используются для доступа к экземпляру внешнего класса из внутреннего класса или функции. Для этого, this
дополняется именем внешнего класса. Например, следующий код определяет вложенный класс Inner
в классе Outer
:
xxxxxxxxxx
class Outer {
class Inner {
fun foo() {
println(this .name)
}
}
val name = "Outer"
}
В этом коде, this@Outer
ссылается на экземпляр класса Outer
.
Вот несколько примеров использования ключевого слова this
в Kotlin:
xxxxxxxxxx
// В членах класса
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 .name)
}
}
val name = "Outer"
}
val outer = Outer()
val inner = outer.Inner()
inner.foo() // Выведет "Outer"
Дополнительно
-
Новости4 недели назад
Видео и подкасты о мобильной разработке 2025.11
-
Новости6 дней назад
Видео и подкасты о мобильной разработке 2025.14
-
Видео и подкасты для разработчиков3 недели назад
Javascript для бэкенда – отличная идея: Node.js, NPM, Typescript
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2025.12