Sobes.tech
Junior

Kokios yra pagrindinės klasės ir sąsajos skirtumai Kotlin?

sobes.tech AI

Atsakymas iš AI

  • Klasė: gali turėti savybių (būsenų) ir funkcijų (elgesio). Gali būti abstrakti, atvira (paveldėjimui) arba galutinė. Konstruktoriai apibrėžia būdą, kaip kuriami objektai. Palaiko paveldėjimą iš vienos klasės ir kelių sąsajų įgyvendinimą.
  • Sąsaja: apibrėžia elgesio sutartį, kurią turi įgyvendinti klasės. Gali turėti abstrakčias funkcijas ir savybes, taip pat įgyvendintas funkcijas (Java 8+). Negali turėti būsenų (savybių su fono lauku). Klasė gali įgyvendinti kelias sąsajas. Neturi konstruktorių.

Lyginamoji lentelė:

Aspektas Klasė Sąsaja
Būsena Gali turėti savybes su reikšmėmis. Negali turėti savybių su reikšmėmis (tik abstrakčios).
Konstruktoriai Gali būti. Neturi.
Įgyvendinimas Gali suteikti pilną įgyvendinimą. Suteikia dalinį arba pilną įgyvendinimą (su numatytaisiais metodais).
Paveldėjimas Paveldi iš vienos klasės. Įgyvendina kelias sąsajas.
Inicializacija Gali būti instancijuota. Negali būti tiesiogiai instancijuota.
Tipas Konkretus arba abstraktus. Tik elgesio sutartis.

Klasės pavyzdys:

class Person(val name: String) { // klasė su konstruktoriu ir savybe
    fun greet() {
        println("Hello, my name is $name")
    }
}

Sąsajos pavyzdys:

interface Greeter { // sąsaja su metodu
    fun greet()
}

class EnglishGreeter : Greeter { // įgyvendinanti klasė
    override fun greet() {
        println("Hello!")
    }
}