Sobes.tech
Middle
301

Java'da ko'p meroslikni qanday amalga oshirish mumkin?

AIdan javob

sobes.tech AI

Java'da sinflarni amalga oshirish merosxo'rligi to'g'ridan-to'g'ri qo'llab-quvvatlanmaydi, chunki "olma muammosi" mavjud. Biroq, uning funksionalligini quyidagi usullar bilan erishish mumkin:

  1. Interfeyslar: Sinf bir nechta interfeyslarni amalga oshirishi mumkin. Interfeyslar faqat metodlarning imzolarini belgilaydi, ularning implementatsiyasini emas.

    interface InterfaceA {
        void methodA();
    }
    
    interface InterfaceB {
        void methodB();
    }
    
    class MyClass implements InterfaceA, InterfaceB {
        @Override
        public void methodA() {
            // methodA ning implementatsiyasi
        }
    
        @Override
        public void methodB() {
            // methodB ning implementatsiyasi
        }
    }
    

    Java 8 da default metodlar paydo bo'lish bilan, interfeyslar ham default implementatsiyalarni taqdim etishi mumkin.

    interface InterfaceC {
        default void defaultMethod() {
            System.out.println("Default implementatsiya");
        }
    }
    
    class MyClass2 implements InterfaceC {
        // defaultMethod ni ishlatishi yoki uni qayta yozishi mumkin
    }
    
  2. Kompozitsiya: Bir nechta sinfdan meros olish o'rniga, sinf boshqa sinflarning instansiyalarini o'z ichiga olishi mumkin (a'zolar).

    class ComponentA {
        void methodA() {
            // methodA ning implementatsiyasi
        }
    }
    
    class ComponentB {
        void methodB() {
            // methodB ning implementatsiyasi
        }
    }
    
    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 chaqiriqlarini compA va compB ob'ektlariga delegat qiladi.

Taqqoslash:

Mexanizm Implementatsiya merosxo'rligi Olma muammosi Moslashuvchanlik
Interfeyslar Yo'q (defaultgacha) Yo'q Yuqori
Kompozitsiya Ha Yo'q Yuqori