Sobes.tech
Middle

Javaда полиморфизмди ишке ашыруучу кайсы механизмдер бар?

sobes.tech AI

AIден жооп

  • Жарыя убактысынын полиморфизми (статикалык полиморфизм): Методдорду жүктөө аркылуу ишке ашырылат (method overloading). Методдор бир эле атка ээ, бирок ар башка сигнатураларга ээ (аргументтердин саны, түрү же тартиби).

    class Calculator {
        // add методун жүктөө
        public int add(int a, int b) {
            return a + b;
        }
    
        public double add(double a, double b) {
            return a + b;
        }
    }
    
  • Ишке ашыруу убактысынын полиморфизми (динамикалык полиморфизм): Методду кайра аныктоо аркылуу ишке ашырылат (method overriding). Төмөнкү класстагы метод ата-энесинин класстагы метод менен бир эле сигнатурага ээ жана өзүнүн ишке ашырылышын камсыздайт. Кайсы методду чакырууну чечүү ишке ашыруу учурунда, объекттин чындык түрүнө жараша кабыл алынат.

    class Animal {
        public void sound() {
            System.out.println("Жаныбар үн чыгарат");
        }
    }
    
    class Dog extends Animal {
        // sound методун кайра аныктоо
        @Override
        public void sound() {
            System.out.println("Ит үрөт");
        }
    }
    
    class Cat extends Animal {
        // sound методун кайра аныктоо
        @Override
        public void sound() {
            System.out.println("Мышык мургаат");
        }
    }
    
  • Суперкласс / интерфейске шилтемелер: Төмөнкү класстардын объекттери суперкласс же алар ишке ашырган интерфейстердин шилтемелерине берилет. Бул ар кандай типтеги объекттерди бирдей иштетүүгө мүмкүндүк берет. Мындай шилтеме аркылуу кайра аныкталган метод чакырылганда, объекттин чындык түрүнүн версиясы ишке ашырылат.

    Animal myAnimal = new Dog(); // Dog объектисин Animal типтеги шилтемеге берүү
    myAnimal.sound(); // Dog классынын кайра аныкталган sound() методу чакырылат