Sobes.tech
Junior

Wat zijn de belangrijkste verschillen tussen een klasse en een interface in Kotlin?

sobes.tech AI

Antwoord van AI

  • Klasse: kan eigenschappen (toestanden) en functies (gedrag) bevatten. Kan abstract, open (voor overerving) of final zijn. Constructeurs bepalen hoe objecten worden gemaakt. Ondersteunt overerving van één klasse en meervoudige implementatie van interfaces.
  • Interface: definieert een gedragscontract dat klassen moeten implementeren. Kan abstracte functies en eigenschappen bevatten, evenals functies met implementatie (Java 8+). Kan geen toestanden bevatten (eigenschappen met back-up veld). Een klasse kan meerdere interfaces implementeren. Heeft geen constructeurs.

Vergelijkingstabel:

Aspect Klasse Interface
Toestand Kan eigenschappen met waarde hebben. Kan geen eigenschappen met waarde hebben (alleen abstract).
Constructeurs Kunnen bestaan. Hebben ze niet.
Implementatie Kan volledige implementatie bieden. Biedt gedeeltelijke of volledige implementatie (met standaardmethoden).
Overerving Erft van één klasse. Implementeert meerdere interfaces.
Initialisatie Kan geïnstantieerd worden. Kan niet direct geïnstantieerd worden.
Type Concrete of abstracte klasse. Alleen gedragscontract.

Voorbeeld van klasse:

class Person(val name: String) { // klasse met constructor en eigenschap
    fun greet() {
        println("Hello, my name is $name")
    }
}

Voorbeeld van interface:

interface Greeter { // interface met methode
    fun greet()
}

class EnglishGreeter : Greeter { // klasse die interface implementeert
    override fun greet() {
        println("Hello!")
    }
}