Sobes.tech
Junior

Kotlin-də sinif və interfeys arasındakı əsas fərqlər nələrdir?

sobes.tech Süni İntellekt

AI-dan cavab

  • Sinif: xüsusiyyətlər (mövqelər) və funksiyalar (davranışlar) içərə bilər. Abstrakt, açıq (miras üçün) və ya son ola bilər. Konstruktorlar obyektlərin yaradılma üsulunu müəyyən edir. Bir sinifdən irs alma və çoxlu interfeys tətbiqi dəstəkləyir.
  • İnterfeys: sinflərin tətbiq etməli olduğu davranış müqaviləsini müəyyən edir. Abstrakt funksiyalar və xüsusiyyətlər bəyan edə bilər, həmçinin implementasiya ilə funksiyalar (Java 8+) da daxil ola bilər. Mövqeləri (backing sahəsi olan xüsusiyyətlər) içərə bilməz. Bir sinif bir neçə interfeysi tətbiq edə bilər. Konstruktorları yoxdur.

Müqayisəli cədvəl:

Tərəf Sinif İnterfeys
Mövqe Dəyəri olan xüsusiyyətlərə sahib ola bilər. Dəyəri olan xüsusiyyətlərə sahib ola bilməz (yalnız abstraktlar).
Konstruktorlar Mövcud ola bilər. Yoxdur.
İcrası Tam implementasiya təmin edə bilər. Qismən və ya tam implementasiya (default metodlar ilə).
Miras Bir sinifdən irs alır. Bir neçə interfeysi tətbiq edir.
İbtidaiyyət İstifadə oluna bilər. Birbaşa istifadə oluna bilməz.
Növ Konkret və ya abstrakt. Yalnız davranış müqaviləsi.

Nümunə sinif:

class Person(val name: String) { // konstruktor və xüsusiyyət ilə sinif
    fun greet() {
        println("Hello, my name is $name")
    }
}

Nümunə interfeys:

interface Greeter { // metod ilə interfeys
    fun greet()
}

class EnglishGreeter : Greeter { // interfeysi tətbiq edən sinif
    override fun greet() {
        println("Hello!")
    }
}