Ի՞նչ տարբերություններ կան Kotlin և Java ինտերֆեյսների միջև։
sobes.tech AI
Պատասխան AI-ից
Հիմնական տարբերությունները՝
-
Նախնական մեթոդների իրականացում: Java 8 և ավելի նոր տարբերակներում ինտերֆեյսներում հնարավոր է իրականացնել մարմնով մեթոդներ (default methods): Kotlin-ում, ինտերֆեյսների մեթոդները ունեն նախնական մարմիններ:
defaultբանալի բառը անհրաժեշտ չէ: -
Աբստրակտ և բաց մեթոդներ: Java-ում բոլոր մեթոդները ինտերֆեյսում անորոշորեն աբստրակտ են: Մեթոդով մարմին ունենալու համար օգտագործեք
default: Kotlin-ում, մարմնով ինտերֆեյսի մեթոդները անորոշորենopenեն և կարող են վերաշարադրվել այն դասերում, որոնք իրականացնում են ինտերֆեյսը: Մեթոդներ առանց մարմնի անորոշորենabstractեն: -
Կարգավիճակ (Properties): Java-ում ինտերֆեյսները չեն կարող պարունակել դաշտեր, միայն կոնստանտներ (
final static): Kotlin-ում, ինտերֆեյսները կարող են հայտարարել աբստրակտ հատկություններ, որոնք պետք է իրականացվեն դասերում, կամ հատկություններ՝ նախնական getter-ներով/setter-ներով (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(); // Աբստրակտ մեթոդ (անորոշ `public` և `abstract`)
default void defaultMethod() { // Նախնական մեթոդ
// Նախնական իրականացում
System.out.println("Default implementation in Java interface");
}
}