რა განსხვავებებია Kotlin და Java ინტერფეისებს შორის?
sobes.tech AI
პასუხი AI-სგან
ძირითადი განსხვავებები:
-
პარამეტრის მეთოდების რეალიზაცია: Java 8 და ახალი ვერსიებში ინტერფეისებში შესაძლებელია მეთოდების რეალიზაცია სხეულით (default methods). Kotlin-ში, ინტერფეისების მეთოდებს აქვთ დეფოლტ სხეულები.
defaultსაკვანძო სიტყვა არ არის საჭირო. -
აბსტრაქტული და ღია მეთოდები: Java-ში ყველა ინტერფეისის მეთოდი არაორაზროვნად აბსტრაქტულია. სხეულის მქონე მეთოდისთვის გამოიყენეთ
default. Kotlin-ში, ინტერფეისის სხეულით მეთოდები არაორაზროვნადopenარიან და შეიძლება გადაფაროს კლასები, რომლებიც ახორციელებენ ინტერფეისს. სხეულით მეთოდები არაორაზროვნადabstractარიან. -
მონაცემები (Properties): Java-ში ინტერფეისები არ შეიძლება შეიცავდეს ველებს, მხოლოდ კონსტანტებს (
final static). Kotlin-ში, ინტერფეისები შეიძლება გამოაცხადონ აბსტრაქტული თვისებები, რომლებიც უნდა განხორციელდეს კლასებში, ან თვისებები with default getters/setters (backstage field არ ინახება). -
კონსტრუქტორები: Java-ში, ინტერფეისები არ შეიძლება შეიცავდეს კონსტრუქტორებს. Kotlin-ში, ინტერფეისები არ შეიძლება შეიცავდეს კონსტრუქტორებს.
-
ხილვადობის მოდიფიკატორები: Java-ში, ინტერფეისის მეთოდები არაორაზროვნად
publicარიან. Kotlin-ში, ინტერფეისის მეთოდები არაორაზროვნადpublic openარიან.
| მახასიათებელი | Kotlin | Java |
|---|---|---|
| მეთოდების რეალიზაცია | დაშვებულია (პარამეტრის) | დაშვებულია (ს default) |
| აბსტრაქტულობა მეთოდების | გარეშე სხეულით - abstract, სხეულით - open |
გარეშე სხეულით - abstract, სხეულით - default |
| მონაცემები (Properties) | დაშვებულია (აბსტრაქტული ან with accessors) | არ დაშვებულია (მხოლოდ კონსტანტები) |
| კონსტრუქტორები | არ დაშვებულია | არ დაშვებულია |
| ხილვადობის მოდიფიკატორი | 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");
}
}