Sobes.tech
Middle

რა განსხვავებებია 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");
    }
}