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;
        }
    }
    
  • Тавсия вақти иҷро (динамик полиморфизм): Бо ёрии override кардани методҳо (method overriding). Метод дар синфи зер дорои ҳамон имзо бо метод дар синфи боло ва пешниҳоди иҷрои худ мебошад. Қарор дар бораи он ки кадом метод даъват шавад, дар вақти иҷро, вобаста ба навъи воқеии объект гирифта мешавад.

    class Animal {
        public void sound() {
            System.out.println("Ҳайвон овоз медиҳад");
        }
    }
    
    class Dog extends Animal {
        // Override кардани метод sound
        @Override
        public void sound() {
            System.out.println("Саг овоз медиҳад");
        }
    }
    
    class Cat extends Animal {
        // Override кардани метод sound
        @Override
        public void sound() {
            System.out.println("Маска овоз медиҳад");
        }
    }
    
  • Референсҳо ба синфи боло / интерфейс: Объектҳои синфи зер метавонанд ба референсҳои синфи боло ё интерфейсҳо, ки онҳо иҷро мекунанд, таъин шаванд. Ин имкон медиҳад, ки объектҳои гуногунро тавассути референси умумӣ баробар коркард кунанд. Дар чунин референс, даъвати методи overrideшуда ба версияи методи синфи воқеии объект оварда мерасонад.

    Animal myAnimal = new Dog(); // Таъин кардани объекти Dog ба референси синфи Animal
    myAnimal.sound(); // Даъвати методи overrideшуда sound() аз синфи Dog