Sobes.tech
Junior

Ҷиҳати фарқиятҳои асосии байни синф ва интерфейс дар Kotlin чист?

sobes.tech AI

Ҷавоб аз AI

  • Класс: метавонад хусусиятҳо (ҳолатҳо) ва функсияҳо (рафтор) дошта бошад. Мумкин аст абстрактӣ, кушод (барои меросгирӣ) ё ниҳоӣ. Конструкторҳо роҳи сохтани объектҳоро муайян мекунанд. Дастгирӣ мекунад меросгирӣ аз як класс ва иҷрои бисёрҷонибаи интерфейсҳоро.
  • Интерфейс: шартномаи рафторро муайян мекунад, ки классҳо бояд иҷро кунанд. Мумкин аст баёнҳои абстрактии функсияҳо ва хусусиятҳоро дошта бошад, инчунин функсияҳо бо иҷро (Java 8+). Намебошад ҳолатҳо (хусусиятҳои бо майдони пуштибонӣ). Як класс метавонад чандин интерфейсҳоро иҷро кунад. Конструкторҳо надорад.

Таблиғи муқоиса:

Бартарӣ Класс Интерфейс
Ҳолат Мумкин аст хусусиятҳо бо арзиш дошта бошад. Намебошад хусусиятҳо бо арзиш (фақат абстрактӣ).
Конструкторҳо Мумкин аст вуҷуд дошта бошанд. Надорад.
Иҷро Мумкин аст иҷрои пурра пешниҳод кунад. Иҷрои қисман ё пурра (бо усулҳои пешфарз).
Меросгирӣ Аз як класс мерос мегирад. Меросгирӣ аз чандин интерфейсҳоро мекунад.
Инициализация Мумкин аст инстантсозӣ шавад. Директан инстантсозӣ намешавад.
Навъ Маъруф ё абстрактӣ. Танҳо шартномаи рафтор.

Масалан, класс:

class Person(val name: String) { // класс бо конструктор ва хусусият
    fun greet() {
        println("Hello, my name is $name")
    }
}

Масалан, интерфейс:

interface Greeter { // интерфейс бо метод
    fun greet()
}

class EnglishGreeter : Greeter { // класс, ки интерфейсро иҷро мекунад
    override fun greet() {
        println("Hello!")
    }
}