Junior — Middle
Aké obmedzenia majú rozširujúce funkcie v jazyku Kotlin?
sobes.tech AI
Odpoveď od AI
V Kotlinu majú rozširujúce funkcie nasledujúce obmedzenia:
- Nemôžu pridávať nové vlastnosti alebo stav k triedam. Rozšírenia fungujú iba s funkciami.
- Rozšírenia nemenia skutočnú triedu, sú staticky rozpoznané. To znamená, že volanie rozšírenia je určené typom premennej počas kompilácie, nie skutočným typom objektu počas behu.
- Nemožno prepísať existujúce metódy triedy pomocou rozšírení. Ak už existuje metóda s rovnakým názvom, bude volaná metóda triedy.
- Rozšírenia nemôžu byť deklarované v rámci lokálnych funkcií. Musia byť deklarované na úrovni súboru, triedy alebo objektu.
Príklad statického rozpoznania rozšírení:
open class Base
class Derived : Base()
fun Base.foo() = "Base"
fun Derived.foo() = "Derived"
fun printFoo(b: Base) {
println(b.foo())
}
printFoo(Derived()) // Vytlačí "Base", pretože rozšírenie je vybrané podľa typu Base
Je dôležité si to uvedomiť pri používaní rozširujúcich funkcií v Kotlin.