Sobes.tech
Junior

Kāda ir atšķirība starp parastajām un paplašināšanas metodēm Kotlin?

sobes.tech AI

Atbilde no AI

Parast metode ir funkcija, kas deklarēta klases iekšpusē.

Paplašināšanas metode ir funkcija, kas deklarēta ārpus klases, bet darbojas tā, it kā tā būtu tās locekle. Deklarējot paplašināšanas metodi, tiek norādīts saņēmēja klases nosaukums, kurai tā tiek piemērota.

// Parastā metode
class MyClass {
    fun myMethod() {
        // metodes īstenošana
    }
}

// Paplašināšanas metode
fun String.removeVowels(): String {
    // metodes īstenošana
}

fun main() {
    val myObject = MyClass()
    myObject.myMethod() // Parastās metodes izsaukums

    val myString = "Hello"
    val stringWithoutVowels = myString.removeVowels() // Paplašināšanas metodes izsaukums
}

Galvenās atšķirības:

  • Deklarācija: Parastās metodes tiek deklarētas klases iekšpusē, paplašināšanas — ārpus tās.
  • Piekļuve klases locekļiem: Parastās metodes tieši piekļūst private un protected locekļiem. Paplašināšanas metodes tieši piekļūt private un protected locekļiem nevar.
  • this: Parastā metodē this atsaucas uz klases eksemplāru, kurā metode ir deklarēta. Paplašināšanas metodē this atsaucas uz saņēmēja objekta eksemplāru, kuram tiek izsaukta paplašināšana.
  • Mantošana: Parastās metodes var tikt pārrakstītas apakšklasēs. Paplašināšanas metodes netiek mantošanas un tās nevar pārrakstīt.
  • Īstenošana: Parastās metodes ir daļa no klases īstenošanas. Paplašināšanas metodes tiek īstenotas atsevišķi un nemaina oriģinālo klasi.

Paplašināšanas metodes ir noderīgas, lai pievienotu funkcionalitāti esošajām klasēm bez to modifikācijas, piemēram, ārējo bibliotēku klasēm vai Kotlin standarta bibliotēkai.