Kotlin va Java'dagi interfeyslar o'rtasidagi farqlar nima?
sobes.tech AI
AIdan javob
Asosiy farqlar:
-
Standart metodlarni amalga oshirish: Java 8 va undan yuqori versiyalarda, interfeyslar ichida tanasi bo'lgan metodlarni (standart metodlar) amalga oshirish mumkin. Kotlin'da, interfeyslar ichidagi metodlar standart tanaga ega.
defaultkalit so'zi kerak emas. -
Abstrakt va ochiq metodlar: Java'da, interfeysdagi barcha metodlar avtomatik ravishda abstrakt hisoblanadi. Tanasi bo'lgan metodni yaratish uchun
defaultishlatiladi. Kotlin'da, interfeys ichidagi tanasi bo'lgan metodlar avtomatik ravishdaopenva interfeysni amalga oshirayotgan sinflarda qayta yozilishi mumkin. Tanasi bo'lmagan metodlar avtomatik ravishdaabstract. -
Holat (Properties): Java'da, interfeyslar maydonlarni o'z ichiga olmaydi, faqat konstantalarni (
final static) o'z ichiga oladi. Kotlin'da, interfeyslar abstrakt xususiyatlarni e'lon qilishi mumkin, ularni sinflarda amalga oshirish kerak, yoki standart getter/setter'li xususiyatlar (backstage maydonlar ma'lumot saqlamaydi). -
Konstruktorlar: Java'da, interfeyslar konstruktorlarni o'z ichiga olmaydi. Kotlin'da, interfeyslar konstruktorlarni o'z ichiga olmaydi.
-
Ko'rinish modifikatorlari: Java'da, interfeys metodlari avtomatik ravishda
public. Kotlin'da, interfeys metodlari avtomatik ravishdapublic open.
| Xususiyat | Kotlin | Java |
|---|---|---|
| Metodlarni amalga oshirish | Ruxsat etilgan (standart) | Ruxsat etilgan (default) |
| Metodlarning abstrakligi | Tanasi bo'lmagan - abstract, tanasi bilan - open |
Tanasi bo'lmagan - abstract, tanasi bilan - default |
| Holat (Properties) | Ruxsat etilgan (abstrakt yoki accessor'lar bilan) | Ruxsat etilmaydi (faqat konstantalar) |
| Konstruktorlar | Ruxsat etilmaydi | Ruxsat etilmaydi |
| Ko'rinish modifikatori | public open standart bo'lib keladi |
public standart bo'lib keladi |
Kotlin misoli:
interface MyInterface {
val myProperty: String // Abstrakt xususiyat
fun abstractMethod() // Abstrakt metod
fun defaultMethod() {
// Standart implementatsiya
println("Kotlin interfeysida standart implementatsiya")
}
}
Java misoli:
interface MyInterfaceJava {
// Xususiyatlar yo'q, faqat konstantalar ruxsat etiladi
// public static final String MY_CONSTANT = "qiymat";
void abstractMethod(); // Abstrakt metod (avtomatik ravishda public va abstract)
default void defaultMethod() { // Standart metod
// Standart implementatsiya
System.out.println("Java interfeysida standart implementatsiya");
}
}