Junior
Kādi ir galvenie atšķirības starp klasi un saskarni Kotlin?
sobes.tech AI
Atbilde no AI
- Klase: var būt īpašības (stāvokļus) un funkcijas (uzvedību). Var būt abstrakta, atvērta (mantošanai) vai galīga. Konstruktoros nosaka, kā tiek veidoti objekti. Atbalsta mantošanu no viena klases un vairākas saskarnes realizāciju.
- Saskarne: nosaka uzvedības līgumu, ko jāievieš klasēm. Var saturēt abstraktas funkcijas un īpašības, kā arī realizētas funkcijas (Java 8+). Nevar saturēt stāvokļus (īpašības ar fonu). Klase var realizēt vairākas saskarnes. Nav konstruktoru.
Salīdzināšanas tabula:
| Aspekts | Klase | Saskarne |
|---|---|---|
| Stāvoklis | Var būt īpašības ar vērtībām. | Nevar būt īpašības ar vērtībām (tikai abstraktas). |
| Konstruktori | Var būt. | Nav. |
| Realizācija | Var nodrošināt pilnu realizāciju. | Nodrošina daļēju vai pilnu realizāciju (ar noklusējuma metodēm). |
| Mantošana | Manto no vienas klases. | Realizē vairākas saskarnes. |
| Inicializācija | Var būt instancējama. | Tieši instancēt nevar. |
| Tips | Konkrēts vai abstrakts. | Tikai uzvedības līgums. |
Klases piemērs:
class Person(val name: String) { // klase ar konstruktoru un īpašību
fun greet() {
println("Hello, my name is $name")
}
}
Saskarnes piemērs:
interface Greeter { // saskarne ar metodi
fun greet()
}
class EnglishGreeter : Greeter { // realizējoša klase
override fun greet() {
println("Hello!")
}
}