Sobes.tech
Junior

Mik a fő különbségek az osztály és az interfész között Kotlinban?

sobes.tech MI

Válasz az MI-től

  • Osztály: tartalmazhat tulajdonságokat (állapotokat) és funkciókat (viselkedést). Lehet absztrakt, nyitott (örökléshez) vagy végső. A konstruktorok meghatározzák, hogyan hozzunk létre objektumokat. Támogatja az öröklést egy osztályból és több interfész megvalósítását.
  • Interfész: meghatározza a viselkedés szerződését, amelyet az osztályoknak meg kell valósítaniuk. Tartalmazhat absztrakt funkció- és tulajdonságdeklarációkat, valamint implementációval rendelkező funkciókat (Java 8+). Nem tartalmazhat állapotokat (háttérmezős tulajdonságokat). Egy osztály több interfészt is megvalósíthat. Nincs konstruktor.

Összehasonlító táblázat:

Szempont Osztály Interfész
Állapot Lehet tulajdonság értékkel. Nem tartalmazhat tulajdonság értéket (csak absztrakt).
Konstruktorok Létezhetnek. Nincs.
Megvalósítás Teljes megvalósítást nyújthat. Részleges vagy teljes megvalósítást nyújt (alapértelmezett módszerekkel).
Öröklés Egy osztályból örököl. Több interfészt valósít meg.
Inicializálás Példányosítható. Nem példányosítható közvetlenül.
Típus Konkrét vagy absztrakt. Csak viselkedés szerződés.

Osztály példa:

class Person(val name: String) { // osztály konstruktorral és tulajdonsággal
    fun greet() {
        println("Hello, my name is $name")
    }
}

Interfész példa:

interface Greeter { // interfész metódussal
    fun greet()
}

class EnglishGreeter : Greeter { // osztály, amely megvalósítja az interfészt
    override fun greet() {
        println("Hello!")
    }
}