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