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!")
}
}