Junior
Millised on peamised erinevused klassi ja liidese vahel Kotlinis?
sobes.tech AI
Vastus AI-lt
- Klass: võib sisaldada omadusi (seisundeid) ja funktsioone (käitumist). Võib olla abstraktne, avatud (päriluseks) või lõplik. Konstruktorid määravad, kuidas objektid luuakse. Toetab pärandumist ühest klassist ja mitme liidese rakendamist.
- Liides: määratleb käitumise lepingu, mida klassid peavad rakendama. Võib sisaldada abstraktseid funktsioone ja omadusi ning ka rakendatud funktsioone (Java 8+). Ei saa sisaldada seisundeid (omadusi taustavälja). Klass võib rakendada mitmeid liideseid. Ei oma konstruktorid.
Võrdlustabel:
| Aspekt | Klass | Liides |
|---|---|---|
| Seisund | Võib omada väärtustega omadusi. | Ei saa omada väärtustega omadusi (ainult abstraktsed). |
| Konstruktorid | Võib olla. | Ei ole. |
| Rakendamine | Võib pakkuda täielikku rakendust. | Pakub osalist või täielikku rakendust (vaikimisi meetoditega). |
| Pärandum | Pärineb ühest klassist. | Rakendab mitmeid liideseid. |
| Initsialiseerimine | Võib olla instantsiivne. | Ei saa olla otse instantsiivne. |
| Tüüp | Konkreetne või abstraktne. | Ainult käitumise leping. |
Klassi näide:
class Person(val name: String) { // klass koos konstruktoriga ja omadusega
fun greet() {
println("Hello, my name is $name")
}
}
Liidese näide:
interface Greeter { // liides meetodiga
fun greet()
}
class EnglishGreeter : Greeter { // rakendav klass
override fun greet() {
println("Hello!")
}
}