Kādi ir atšķirības starp Kotlin un Java saskarnēm?
sobes.tech AI
Atbilde no AI
Galvenās atšķirības:
-
Noklusējuma metožu realizācija: Java 8 un jaunākās versijās interfeisos var realizēt metodes ar ķermeni (default methods). Kotlin, interfeisos metodes ir ar noklusējuma ķermeņiem. Atslēgvārds
defaultnav nepieciešams. -
Abstrakti un atvērti metodes: Java, visi interfeisa metodes ir neizteikti abstrakti. Lai izveidotu metodi ar ķermeni, izmantojiet
default. Kotlin, interfeisa metodes ar ķermeni ir neizteiktiopenun tās var pārdefinēt klasēs, kas realizē interfeisu. Metodes bez ķermeņa ir neizteiktiabstract. -
Īpašības (Properties): Java interfeisos nevar būt lauki, tikai konstantes (
final static). Kotlin interfeisos var deklarēt abstraktas īpašības, kuras jārealizē klasēs, vai īpašības ar noklusējuma gatoriem/seteriem (backstage lauks netiek glabāts). -
Konstruktori: Java interfeisos nevar būt konstruktori. Kotlin interfeisos nevar būt konstruktori.
-
Redzamības modifikatori: Java, interfeisa metodes ir neizteikti
public. Kotlin, interfeisa metodes ir neizteiktipublic open.
| Īpašība | Kotlin | Java |
|---|---|---|
| Metožu realizācija | Atļauta (pēc noklusējuma) | Atļauta (ar default) |
| Abstraktums metodes | Bez ķermeņa - abstract, ar ķermeni - open |
Bez ķermeņa - abstract, ar ķermeni - default |
| Īpašības (Properties) | Atļautas (abstraktas vai ar piekļuves metodēm) | Neatļautas (tikai konstantes) |
| Konstruktori | Neatļauti | Neatļauti |
| Redzamības modifikators | public open pēc noklusējuma |
public pēc noklusējuma |
Piemērs Kotlin:
interface MyInterface {
val myProperty: String // Abstrakta īpašība
fun abstractMethod() // Abstrakta metode
fun defaultMethod() {
// Noklusējuma realizācija
println("Default implementation in Kotlin interface")
}
}
Piemērs Java:
interface MyInterfaceJava {
// Nav īpašību, tikai konstantes ir atļautas
// public static final String MY_CONSTANT = "value";
void abstractMethod(); // Abstrakta metode (neizteikta `public` un `abstract`)
default void defaultMethod() { // Noklusējuma metode
// Noklusējuma realizācija
System.out.println("Default implementation in Java interface");
}
}