Sobes.tech
Junior — Middle

Kun je binnen een uitgebreide functie in Kotlin of een andere programmeertaal toegang krijgen tot privé-methoden van een klasse?

sobes.tech AI

Antwoord van AI

In Kotlin hebben extension functions geen toegang tot private methods of properties van de klasse waarop ze worden toegepast. Dit komt doordat extensions de klasse zelf niet wijzigen, maar statische functies zijn met een aanroep-syntaxis vergelijkbaar met methoden.

Voorbeeld:

class MyClass {
    private fun privateMethod() = "Privé methode"
}

fun MyClass.extensionFunction() {
    // this.privateMethod() // Fout: kan niet bij een private methode
}

Als je private methods binnen een extension wilt gebruiken, is dat niet direct mogelijk. Alternatieven:

  • Maak de methode protected of internal, als dat acceptabel is.
  • Voeg een publieke of interne wrapper-methode toe aan de klasse.
  • Gebruik overerving en overschrijven.

In andere talen kan de situatie verschillen, maar meestal zijn private methods alleen toegankelijk binnen de klasse, en extensions of externe functies niet.