Middle
Interfeysni qachon ishlatish kerak va qachon abstrakt sinf?
sobes.tech AI
AIdan javob
Biz asosiy funktsiyalar va umumiy holatni yaratish uchun abstrakt sinfdan foydalanamiz, bu sinf vorislik qilishi mumkin. Bu umumiy metodlar bilan va ustun yozilishi kerak bo'lgan metodlar bilan ishlash uchun mos keladi. Abstrakt sinf maydonlar va konstruktorlarni o'z ichiga olishi mumkin.
// Abstrakt sinf
abstract class Animal {
String name;
public Animal(String name) {
this.name = name;
}
abstract void makeSound(); // Abstrakt metod
void eat() { // Implementatsiyalangan metod
System.out.println(name + " ovqatlanmoqda.");
}
}
Interfeys yordamida, sinflar bajarishi kerak bo'lgan metodlar to'plamini tavsiflovchi shartnoma belgilaymiz. Bu ko'p funktsionallik (ko'p meros olish) uchun mos keladi. Interfeys holat (maydonlar) va konstruktorlarni o'z ichiga olmaydi (Java 8 dan oldin).
// Interfeys
interface Flyable {
void fly(); // Abstrakt metod
}
Farqlar jadvali:
| Xususiyat | Abstrakt sinf | Interfeys |
|---|---|---|
| A'zolar turi | Maydonlar, abstrakt va aniq metodlar, konstruktorlar | Konstantlar, abstrakt metodlar (standart), statik va default metodlar (Java 8 dan boshlab) |
| Metodlarning amalga oshirilishi | Amalga oshirilgan metodlar bo'lishi mumkin | Java 8 dan oldin faqat abstrakt metodlar, Java 8 dan boshlab - static va default |
| Holat | Holat (maydonlar) bo'lishi mumkin | Holat (maydonlar) bo'lishi mumkin emas |
| Meros olish | Yagona meros olish | Ko'p meros olish |
| Foydalanish | "-ga" (is-a) - asosiy tur | "-ga" (has-a) - harakat shartnomasi |