Junior
Mi a különbség a normál és a kiterjesztő módszerek között Kotlinben?
sobes.tech MI
Válasz az MI-től
A szokásos módszer egy olyan függvény, amelyet egy osztályon belül deklarálnak.
A kiterjesztő módszer egy olyan függvény, amelyet az osztályon kívül deklarálnak, de úgy viselkedik, mintha az osztály egyik tagja lenne. A kiterjesztő módszer deklarálásakor megadjuk a címzett osztály nevét, amelyhez alkalmazzuk.
// Szokásos módszer
class MyClass {
fun myMethod() {
// a módszer megvalósítása
}
}
// Kiterjesztő módszer
fun String.removeVowels(): String {
// a módszer megvalósítása
}
fun main() {
val myObject = MyClass()
myObject.myMethod() // Szokásos módszer hívása
val myString = "Hello"
val stringWithoutVowels = myString.removeVowels() // Kiterjesztő módszer hívása
}
Fő különbségek:
- Deklaráció: A szokásos módszerek az osztályon belül, a kiterjesztő módszerek kívül vannak deklarálva.
- Hozzáférés az osztály tagjaihoz: A szokásos módszerek közvetlen hozzáférést biztosítanak a
privateésprotectedtagokhoz. A kiterjesztő módszerek nem rendelkeznek közvetlen hozzáféréssel aprivateésprotectedtagokhoz. this: Egy szokásos módszerben athisaz adott osztály példányára utal. A kiterjesztő módszerben athisa hívott kiterjesztés címzett objektum példányára utal.- Öröklődés: A szokásos módszerek felülírhatók az alosztályokban. A kiterjesztő módszerek nem öröklődnek és nem írhatók felül.
- Implementáció: A szokásos módszerek az osztály implementációjának részei. A kiterjesztő módszerek külön vannak implementálva, és nem módosítják az eredeti osztályt.
A kiterjesztő módszerek hasznosak meglévő osztályok funkcionalitásának bővítésére anélkül, hogy módosítanánk azokat, például külső könyvtárak osztályaihoz vagy a Kotlin standard könyvtárához.