Millised on erinevused Kotlin ja Java liidestes?
sobes.tech AI
Vastus AI-lt
Peamised erinevused:
-
Vaikimisi meetodite rakendamine: Java 8 ja uuemates versioonides saab liideseid rakendada meetoditega kehas (default methods). Kotlinis on liideste meetoditel vaikimisi kehad.
defaultmärksõna ei ole vajalik. -
Abstraktsed ja avatud meetodid: Java puhul on kõik liidese meetodid kaudselt abstraktsed. Meetodi keha loomiseks kasutage
default. Kotlinis on liidese meetodid kehas kaudseltopenja neid saab ülekirjutada liidest implementeerivates klassides. Meetodid ilma kehadeta on kaudseltabstract. -
Omadused (Properties): Java liideseid ei saa sisaldada välju, ainult konstante (
final static). Kotlinis võivad liidesed deklareerida abstraktseid omadusi, mida klassid peavad rakendama, või omadusi vaikimisi getterite/setteritega (backstage väli ei salvestata). -
Konstruktorid: Java liideseid ei saa sisaldada konstruktorid. Kotlinis ei saa liideseid konstruktoritega defineerida.
-
Nähtavuse modifikaatorid: Java puhul on liidese meetodid kaudselt
public. Kotlinis on liidese meetodid kaudseltpublic open.
| Omadus | Kotlin | Java |
|---|---|---|
| Meetodite rakendamine | Lubatud (vaikimisi) | Lubatud (koos default) |
| Abstraktsus meetodites | Ilma kehadeta - abstract, koos kehadega - open |
Ilma kehadeta - abstract, koos kehadega - default |
| Omadused (Properties) | Lubatud (abstraktsed või koos juurdepääsumeetoditega) | Ei lubata (ainult konstantsed) |
| Konstruktorid | Ei lubata | Ei lubata |
| Nähtavuse modifikaator | public open vaikimisi |
public vaikimisi |
Näide Kotlin:
interface MyInterface {
val myProperty: String // Abstraktne omadus
fun abstractMethod() // Abstraktne meetod
fun defaultMethod() {
// Vaikimisi rakendus
println("Default implementation in Kotlin interface")
}
}
Näide Java:
interface MyInterfaceJava {
// Ei ole omadusi, ainult konstantsed on lubatud
// public static final String MY_CONSTANT = "value";
void abstractMethod(); // Abstraktne meetod (kaudne `public` ja `abstract`)
default void defaultMethod() { // Vaikimisi meetod
// Vaikimisi rakendus
System.out.println("Default implementation in Java interface");
}
}