Kotlin жана Javaдагы интерфейстердин айырмачылыктары эмнеде?
sobes.tech AI
AIден жооп
Негизги айырмачылыктар:
-
Дефолт ыкмаларды ишке ашыруу: Java 8 жана андан кийинки версияларда интерфейстерде денеси бар ыкмаларды ишке ашырууга болот (default methods). Kotlinде, интерфейстердеги ыкмалардын денелери бар.
defaultачкыч сөзү талап кылынбайт. -
Абстракт жана ачык ыкмалар: Javaда бардык интерфейс ыкмалары косумдуу абстракттуу. Денеси бар ыкманы түзүү үчүн
defaultколдонулат. Kotlinде, денеси бар интерфейс ыкмалары косумдууopenжана интерфейсти ишке ашырган класстарда кайра аныкталышы мүмкүн. Денеси жок ыкмалар косумдууabstract. -
Мүлк (Properties): Javaда интерфейстерде талаалар болбойт, тек гана константтар (
final static). Kotlinде, интерфейстер абстракттык мүлктөрдү же алдын ала аныкталган геттер/сеттер менен мүлктөрдү жарыялай алат (backstage field сакталбайт). -
Конструкторлор: Javaда интерфейстерде конструкторлор болбойт. Kotlinде, интерфейстерде конструкторлор болбойт.
-
Көрсөтүү модификаторлору: Javaда, интерфейс ыкмалары косумдуу
public. Kotlinде, интерфейс ыкмалары косумдууpublic open.
| Өзгөчөлүк | Kotlin | Java |
|---|---|---|
| Ыкмаларды ишке ашыруу | Ишке ашырылган (алдын ала белгиленген) | Ишке ашырылган (с default) |
| Абстракттык ыкмалар | Денеси жок - abstract, денеси бар - open |
Денеси жок - abstract, денеси бар - default |
| Мүлк (Properties) | Ишке ашырылган (абстракттык же геттер/сеттер менен) | Ишке ашырылган эмес (тек гана константтар) |
| Конструкторлор | Ишке ашырылган эмес | Ишке ашырылган эмес |
| Көрсөтүү модификатору | public open алдын ала белгиленген |
public алдын ала белгиленген |
Кыскача Kotlin:
interface MyInterface {
val myProperty: String // Абстракттык мүлк
fun abstractMethod() // Абстракттык ыкма
fun defaultMethod() {
// Алдын ала ишке ашыруу
println("Default implementation in Kotlin interface")
}
}
Кыскача Java:
interface MyInterfaceJava {
// Мүлктөр жок, гана константтар уруксат берилет
// public static final String MY_CONSTANT = "value";
void abstractMethod(); // Абстракттык ыкма (жеке жана абстракт)
default void defaultMethod() { // Алдын ала ишке ашырылган ыкма
// Алдын ала ишке ашыруу
System.out.println("Default implementation in Java interface");
}
}