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!")
}
}