Middle
Java-da çoxlu irsiyyəti necə həyata keçirmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da siniflərin çoxlu irsiyyəti birbaşa dəstəklənmir, çünki "romb problemi" mövcuddur. Ancaq, onun funksionallığını aşağıdakı üsullarla əldə etmək mümkündür:
-
İnterfeyslər: Sinif bir neçə interfeysi tətbiq edə bilər. İnterfeyslər yalnız metodların imzalarını müəyyən edir, onların tətbiqini deyil.
interface InterfaceA { void methodA(); } interface InterfaceB { void methodB(); } class MyClass implements InterfaceA, InterfaceB { @Override public void methodA() { // methodA-nın tətbiqi } @Override public void methodB() { // methodB-nın tətbiqi } }Java 8-də default metodların yaranması ilə, interfeyslər də default tətbiqlər təmin edə bilər.
interface InterfaceC { default void defaultMethod() { System.out.println("Default tətbiq"); } } class MyClass2 implements InterfaceC { // defaultMethod istifadə edə və ya onu yenidən yaza bilər } -
Kompozisiya: Bir neçə sinifdən irs almaq əvəzinə, sinif digər siniflərin nümunələrini daxil edə bilər (üzvlər).
class ComponentA { void methodA() { // methodA-nın tətbiqi } } class ComponentB { void methodB() { // methodB-nın tətbiqi } } class MyClass3 { private ComponentA compA = new ComponentA(); private ComponentB compB = new ComponentB(); public void delegateMethodA() { compA.methodA(); } public void delegateMethodB() { compB.methodB(); } }MyClass3sinfi metod çağrılarınıcompAvəcompBobyektlərinə yönəldir.
Müqayisə:
| Mexanizm | İrsi tətbiqi | Romb problemi | Elastiklik |
|---|---|---|---|
| İnterfeyslər | Yox (default-ə qədər) | Yox | Yüksək |
| Kompozisiya | Bəli | Yox | Yüksək |