Sobes.tech
Junior

Aký je rozdiel medzi bežnými a rozširujúcimi metódami v Kotlin?

sobes.tech AI

Odpoveď od AI

Obvyklá metóda je funkcia deklarovaná vnútri triedy.

Rozširujúca metóda je funkcia deklarovaná mimo triedy, ale pôsobí, akoby bola jej členom. Pri deklarácii rozširujúcej metódy sa uvádza názov cieľovej triedy, na ktorú sa aplikuje.

// Obvyklá metóda
class MyClass {
    fun myMethod() {
        // implementácia metódy
    }
}

// Rozširujúca metóda
fun String.removeVowels(): String {
    // implementácia metódy
}

fun main() {
    val myObject = MyClass()
    myObject.myMethod() // Volanie obvyklej metódy

    val myString = "Hello"
    val stringWithoutVowels = myString.removeVowels() // Volanie rozširujúcej metódy
}

Kľúčové rozdiely:

  • Deklarácia: Obvyklé metódy sú deklarované vnútri triedy, rozširujúce, mimo.
  • Prístup k členom triedy: Obvyklé metódy majú priame prístupy k private a protected členom triedy. Rozširujúce metódy nemajú priame prístupy k private a protected členom.
  • this: V obvyklej metóde this odkazuje na inštanciu triedy, v ktorej je metóda deklarovaná. V rozširujúcej metóde this odkazuje na inštanciu cieľového objektu, pre ktorý je rozšírenie volané.
  • Dedičnosť: Obvyklé metódy môžu byť prepísané v podtriedach. Rozširujúce metódy nie sú dedené a nemôžu byť prepísané.
  • Implementácia: Obvyklé metódy sú súčasťou implementácie triedy. Rozširujúce metódy sú implementované samostatne a nemenia pôvodnú triedu.

Rozširujúce metódy sú užitočné na pridanie funkčnosti k existujúcim triedam bez ich modifikácie, napríklad k triedam z externých knižníc alebo k štandardnej knižnici Kotlinu.