Junior — Middle
Obyektga yo'naltirilgan dasturlashda abstrakt sinf va interfeys o'rtasidagi farqlar nimalardan iborat?
sobes.tech AI
AIdan javob
Abstrakt sinf va interfeys ob'ektga yo'naltirilgan dasturlashda shartnomalar va xulq-atvorlarni tasvirlashning ikki usuli bo'lib, ular turli xususiyatlarga ega:
- Abstrakt sinf abstrakt metodlarni (implementatsiyasiz) va shuningdek, implementatsiyali metodlar va maydonlarni (holat) o'z ichiga olishi mumkin. U meros olish uchun asosiy sinf sifatida xizmat qiladi.
- Interfeys faqat metodlarning imzolarini (shartnoma) tasvirlaydi, holatni o'z ichiga olmaydi va odatda implementatsiyani ham o'z ichiga olmaydi (ba'zi tillarda standart metodlar mumkin).
Farqlar:
- Bir sinf faqat bitta abstrakt sinfdan meros olishi mumkin, ammo bir nechta interfeyslarni amalga oshirishi mumkin.
- Abstrakt sinf konstruktorlarga ega bo'lishi mumkin, interfeys esa emas.
- Abstrakt sinf funksionallikni qisman amalga oshirish uchun ishlatiladi, interfeys faqat shartnomani belgilash uchun.
Dart (Flutter) misoli:
abstract class Animal {
void eat(); // abstrakt metod
void sleep() {
print('Uyquda'); // implementatsiyali metod
}
}
// Dart'da interfeys — faqat abstrakt metodlar bilan sinf
abstract class Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
@override
void eat() {
print('Qush ovqatlanmoqda');
}
@override
void fly() {
print('Qush uchmoqda');
}
}