Sobes.tech
Junior

Milline on erinevus tavaliste ja laiendavate meetodite vahel Kotlinis?

sobes.tech AI

Vastus AI-lt

Tavaline meetod on funktsioon, mis on deklareeritud klassi sees.

Laiendav meetod on funktsioon, mis on deklareeritud väljaspool klassi, kuid käitub nagu selle liige. Laiendava meetodi deklareerimisel märgitakse sihtklassi nimi, millele see rakendub.

// Tavaline meetod
class MyClass {
    fun myMethod() {
        // meetodi rakendus
    }
}

// Laiendav meetod
fun String.removeVowels(): String {
    // meetodi rakendus
}

fun main() {
    val myObject = MyClass()
    myObject.myMethod() // Tavalise meetodi kutsumine

    val myString = "Hello"
    val stringWithoutVowels = myString.removeVowels() // Laiendava meetodi kutsumine
}

Peamised erinevused:

  • Deklaratsioon: Tavalised meetodid deklareeritakse klassi sees, laiendavad meetodid väljaspool.
  • Ligipääs klassi liikmetele: Tavalised meetodid pääsevad otse ligi private ja protected liikmetele. Laiendavad meetodid ei pääse otse ligi private ja protected liikmetele.
  • this: Tavalises meetodis viitab this klassi eksemplarile, kus meetod on deklareeritud. Laiendavas meetodis viitab this sihtobjekti eksemplarile, millele laiendus kutsutakse.
  • Pärimine: Tavalised meetodid võivad olla alampõlvkondades üle kirjutatud. Laiendavad meetodid ei pärandu ega saa olla üle kirjutatud.
  • Rakendus: Tavalised meetodid on osa klassi rakendusest. Laiendavad meetodid on eraldi rakendused ega muuda algklass.

Laiendavad meetodid on kasulikud olemasolevate klasside funktsionaalsuse lisamiseks ilma nende muutmiseta, näiteks kolmanda osapoole raamatukogude või Kotlini standardraamatukogu klassidele.