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 |