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
privatejaprotectedliikmetele. Laiendavad meetodid ei pääse otse ligiprivatejaprotectedliikmetele. this: Tavalises meetodis viitabthisklassi eksemplarile, kus meetod on deklareeritud. Laiendavas meetodis viitabthissihtobjekti 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.