Sobes.tech
Junior — Middle

Objasnite u čemu se razlikuje korišćenje apstraktnih klasa u Javi i Kotlinu.

sobes.tech АИ

Одговор од АИ

U Javi i Kotlinu, apstraktne klase služe za kreiranje osnovnih klasa koje se ne mogu direktno instancirati, ali se mogu naslediti.

Razlike:

  • U Kotlinu, sve klase su po defaultu finalne, pa je za kreiranje apstraktne klase potrebno eksplicitno koristiti ključnu reč abstract. U Javi, klase nisu po defaultu finalne, ali se takođe koristi abstract za apstraktne klase.

  • U Kotlinu, apstraktne klase mogu sadržavati i apstraktne i konkretne metode, kao i u Javi.

  • Kotlin ima interfejse sa podrazumevanom implementacijom, što smanjuje potrebu za apstraktnim klasama u nekim slučajevima.

  • Kotlin podržava višestruko nasleđivanje interfejsa, ali ne i klasa, kao i Java.

Primer apstraktne klase u Kotlinu:

abstract class Animal {
    abstract fun makeSound()
    fun sleep() {
        println("Sleeping")
    }
}

class Dog : Animal() {
    override fun makeSound() {
        println("Woof")
    }
}

U Javi je slično:

abstract class Animal {
    abstract void makeSound();
    void sleep() {
        System.out.println("Sleeping");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Woof");
    }
}