Connect with us

TechHype

Вопросы с собеседований: что такое this в Kotlin

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

Фото аватара

Опубликовано

/

     
     

В Kotlin, ключевое слово this используется для ссылки на текущий экземпляр класса. Оно может использоваться в следующих случаях:

  • В членах класса, this ссылается на текущий экземпляр этого класса.
  • В расширениях функций или функциях с получателем, this ссылается на приемник, переданный в качестве параметра.
  • В квалифицированных выражениях thisthis ссылается на экземпляр внешнего класса.

В членах класса

В членах класса, 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"

Дополнительно

 

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement

Наши партнеры:

LEGALBET

Мобильные приложения для ставок на спорт
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: