Junior
Kotlinдеги класс жана интерфейс арасындагы негизги айырмачылыктар кандай?
sobes.tech AI
AIден жооп
- Класс: мүнөздөмөлөрдү (күйдү) жана функцияларды (карекет) камтышы мүмкүн. Абаастук, мурунку (мурас алуу үчүн) же финалдуу болушу мүмкүн. Конструкторлор объекттерди түзүү жолун аныктайт. Бир класс менен мурас алуу жана интерфейстерди көптөгөн реализациялоо үчүн колдонот.
- Интерфейс: карекеттин келишимин аныктайт, аны класстар ишке ашырышы керек. Абаастук декларациялар жана функцияларды камтышы мүмкүн, ошондой эле ишке ашырылган функциялар (Java 8+). Күйдү (бэкинг талаасы бар мүлктөрдү) камтышы мүмкүн эмес. Класс бир нече интерфейсти ишке ашыра алат. Конструкторлору жок.
Салыштыруу таблицасы:
| Тасвир | Класс | Интерфейс |
|---|---|---|
| Күйү | Мүмкүн мүнөздөмөлөргө ээ болушу мүмкүн. | Мүмкүн эмес мүнөздөмөлөргө ээ болушу мүмкүн (тек гана абаастук). |
| Конструкторлор | Мүмкүн. | Жок. |
| Ишке ашыруу | Толук ишке ашыруу камсыздай алат. | Чөлмө же толук ишке ашыруу камсыздайт (default-методдор менен). |
| Мурас алуу | Бир класс менен мурас алат. | Көптөгөн интерфейстерди ишке ашырат. |
| Инициализация | Инстанциялануучу болушу мүмкүн. | Туракынан инстанцияланбайт. |
| Тип | Тактык же абаастук. | Карекеттин келишими гана. |
Класс мисалы:
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!")
}
}