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

  1. İ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
    }
    
  2. 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();
        }
    }
    

    MyClass3 sinfi metod çağrılarını compAcompB obyektlə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