Sobes.tech
Junior — Middle

Тавзеҳ диҳед, ки истифодаи синфҳои абстрактӣ дар Java ва Kotlin чӣ фарқ дорад.

sobes.tech AI

Ҷавоб аз AI

Дар Java ва Kotlin, синфҳои абстрактӣ барои эҷоди синфҳои асосӣ истифода мешаванд, ки мустақиман намешаванд, аммо метавонанд мерос гиранд.

Фарқиятҳо:

  • Дар Kotlin, ҳамаи синфҳо ба таври пешфарз финалӣ мебошанд, бинобар ин барои эҷоди синфи абстрактӣ лозим аст калиди калидии abstract-ро истифода баред. Дар Java, синфҳо ба таври пешфарз финалӣ нестанд, аммо барои синфҳои абстрактӣ ҳам abstract истифода мешавад.

  • Дар Kotlin, синфҳои абстрактӣ метавонанд дорои методҳои абстрактӣ ва мушаххас бошанд, ҳамон тавр ки дар Java.

  • Kotlin интерфейсҳо бо амалишавии пешфарзӣ доранд, ки эҳтиёҷ ба синфҳои абстрактиро дар баъзе ҳолатҳо кам мекунад.

  • Kotlin имкон медиҳад, ки интерфейсҳоро бисёртарафа мерос гиред, аммо на синфҳоро, ҳамон тавр ки дар Java.

Масали синфи абстрактӣ дар Kotlin:

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

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

Дар Java, ин ба монанди:

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

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