Kotlin və Java-dakı interfeyslər arasındakı fərqlər nələrdir?
sobes.tech Süni İntellekt
AI-dan cavab
Əsas fərqlər:
-
Varsayılan metodların tətbiqi: Java 8 və yuxarı versiyalarda, interfeyslərdə gövdəsi olan metodlar (varsayılan metodlar) tətbiq oluna bilər. Kotlin-də, interfeyslərdə metodların varsayılan gövdələri var.
defaultaçar sözü lazım deyil. -
Abstrakt və açıq metodlar: Java-da, bütün interfeys metodları qismən abstrakt sayılır. Gövdəsi olan metod yaratmaq üçün
defaultistifadə edilir. Kotlin-də, gövdəsi olan metodlar qismənopenvə interfeysi həyata keçirən siniflərdə yenidən yaza bilər. Gövdəsiz metodlar qismənabstract. -
Vəziyyət (Xüsusiyyətlər): Java-da, interfeyslər sahə daxil edə bilməz, yalnız sabitlər (
final static). Kotlin-də, interfeyslər abstrakt xüsusiyyətləri elan edə bilər, bunlar siniflərdə həyata keçirilməlidir və ya standart getter/setter ilə xüsusiyyətlər (backstage sahələr məlumat saxlamır). -
Konstruktorlar: Java-da, interfeyslər konstruktor daxil edə bilməz. Kotlin-də, interfeyslər konstruktor daxil edə bilməz.
-
Görünürlük modifikatorları: Java-da, interfeys metodları qismən
public. Kotlin-də, interfeys metodları qismənpublic open.
| Xüsusiyyət | Kotlin | Java |
|---|---|---|
| Metodların tətbiqi | İcazə verilir (varsayılan) | İcazə verilir (default) |
| Metodların abstraktlığı | Bəhsiz - abstract, bəhəli - open |
Bəhsiz - abstract, bəhəli - default |
| Vəziyyət (Xüsusiyyətlər) | İcazə verilir (abstrakt və ya accessor ilə) | İcazə verilmir (yalnız sabitlər) |
| Konstruktorlar | İcazə verilmir | İcazə verilmir |
| Görünürlük modifikatoru | public open varsayılan |
public varsayılan |
Kotlin nümunəsi:
interface MyInterface {
val myProperty: String // Abstrakt xüsusiyyət
fun abstractMethod() // Abstrakt metod
fun defaultMethod() {
// Varsayılan tətbiq
println("Kotlin interfeysində varsayılan tətbiq")
}
}
Java nümunəsi:
interface MyInterfaceJava {
// Xüsusiyyət yoxdur, yalnız sabitlər icazə verilir
// public static final String MY_CONSTANT = "dəyər";
void abstractMethod(); // Abstrakt metod (qismən ictimai və abstrakt)
default void defaultMethod() { // Varsayılan metod
// Varsayılan tətbiq
System.out.println("Java interfeysində varsayılan tətbiq");
}
}