Sobes.tech
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