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