Sobes.tech
Junior — Middle

Фарқи байни усули абстракт дар Java ва Kotlin чист?

sobes.tech AI

Ҷавоб аз AI

Дар Java, усулҳои абстрактӣ дар класи абстрактӣ эълон карда мешаванд ва иҷронашон нест. Класи, ки усули абстрактиро дорад, бояд ҳамчун abstract эълон карда шавад, ва ҳамаи меросбарон вазифадоранд, ки ин усулро иҷро кунанд, агар онҳо абстрактӣ набошанд.

Дар Kotlin, усулҳои абстрактӣ низ дар класиҳои абстрактӣ эълон карда мешаванд, аммо фарқияти муҳим вуҷуд дорад: дар Kotlin, мумкин аст, усулҳо бо иҷроиш дар класиҳои абстрактӣ (open ё abstract) эълон шаванд, ва интерфейсҳо метавонанд усулҳои бо иҷроиш дошта бошанд (усулҳои default). Усули абстрактӣ дар Kotlin — усул бе бадан, ки бояд дар синфҳои зернависӣ иваз карда шавад.

Масалан дар Kotlin:

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

Ин ҷо, makeSound усули абстрактӣ аст, sleep — усули бо иҷроиш.

Аз ин рӯ, фарқият дар он аст, ки Kotlin дар муайян кардани усулҳои бо иҷроиш дар класиҳои абстрактӣ ва интерфейсҳо бештар флексибл аст, дар ҳоле ки Java талаб мекунад, ки усулҳои абстрактӣ бе иҷроиш бошанд ва дар класиҳои абстрактӣ ё интерфейсҳо бо усулҳои default ҷойгир бошанд.