Sobes.tech
Junior

Kuo skiriasi įprasti ir išplėstiniai metodai Kotlin?

sobes.tech AI

Atsakymas iš AI

Įprastas metodas yra funkcija, deklaruota klasės viduje.

Plėtojantis metodas yra funkcija, deklaruota už klasės ribų, tačiau veikia tarsi būtų jos narys. Deklaruojant plėtojantį metodą, nurodomas gavėjo klasės pavadinimas, kuriai jis taikomas.

// Įprastas metodas
class MyClass {
    fun myMethod() {
        // metodo įgyvendinimas
    }
}

// Plėtojantis metodas
fun String.removeVowels(): String {
    // metodo įgyvendinimas
}

fun main() {
    val myObject = MyClass()
    myObject.myMethod() // Įprasto metodo kvietimas

    val myString = "Hello"
    val stringWithoutVowels = myString.removeVowels() // Plėtojancio metodo kvietimas
}

Pagrindiniai skirtumai:

  • Deklaravimas: Įprasti metodai deklaruojami klasės viduje, plėtojantys — už jos.
  • Prieiga prie klasės narių: Įprasti metodai turi tiesioginę prieigą prie private ir protected narių. Plėtojantys metodai neturi tiesioginės prieigos prie private ir protected narių.
  • this: Įprasto metodo this nurodo klasės egzempliorių, kuriame metodas deklaruotas. Plėtojant, this nurodo gavėjo objekto egzempliorių, kuriam kviečiama plėtra.
  • Paveldėjimas: Įprasti metodai gali būti perrašyti pogrupiuose. Plėtojantys metodai nėra paveldimi ir jų perrašyti negalima.
  • Įgyvendinimas: Įprasti metodai yra klasės įgyvendinimo dalis. Plėtojantys metodai įgyvendinami atskirai ir nekeičia originalios klasės.

Plėtojantys metodai naudingi, norint pridėti funkcionalumą prie esamų klasių be jų modifikavimo, pavyzdžiui, prie išorinių bibliotekų klasių arba Kotlin standartinės bibliotekos.