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