Sobes.tech
Middle

Interfeysi nə vaxt istifadə etməli və abstrakt sinfi nə vaxt?

sobes.tech Süni İntellekt

AI-dan cavab

Biz əsas funksionallıq və ümumi vəziyyət yaratmaq üçün abstrakt sinfdən istifadə edirik, bu sinf alt sinflər tərəfindən miras alınabilir. Bu, ümumi metodlar və üstü yazılmalı metodlar üçün uyğundur. Abstrakt sinif sahələr və konstruktorlar içərə bilər.

// Abstrakt sinif
abstract class Animal {
    String name;

    public Animal(String name) {
        this.name = name;
    }

    abstract void makeSound(); // Abstrakt metod

    void eat() { // İcrası olan metod
        System.out.println(name + " yemək yeyir.");
    }
}

Biz interfeys istifadə edərək, sinfların həyata keçirməli olduğu metodlar to'plamini təsvir edən müqavilə müəyyən edirik. Bu çoxsaylı davranışa (funksionallığın çoxsaylı irsi) çatmaq üçün uyğundur. Interfeys vəziyyət (sahələr) və konstruktorlar içərə bilməz (Java 8-dən əvvəl).

// Interfeys
interface Flyable {
    void fly(); // Abstrakt metod
}

Fərqlərin müqayisə cədvəli:

Xüsusiyyət Abstrakt sinif Interfeys
Üzvlərin növü Sahələr, abstrakt və konkret metodlar, konstruktorlar Sabitlər, abstrakt metodlar (standart), statik və default metodlar (Java 8-dən sonra)
Metodların tətbiqi Metodlar tətbiqi ilə ola bilər Yalnız Java 8-ə qədər abstrakt metodlar, Java 8-dən sonra - static və default
Vəziyyət Vəziyyət (sahələr) ola bilər Vəziyyət (sahələr) ola bilməz
Miras Yeganə miras Çoxsaylı tətbiq
İstifadə "-dır" (is-a) - əsas növ "-ə" (has-a) - davranış müqaviləsi