Sobes.tech
Middle

Java'da polimorfizmni amalga oshirishning qanday mexanizmlari mavjud?

sobes.tech AI

AIdan javob

  • Kompilyatsiya vaqtida ko‘p shakllilik (statik ko‘p shakllilik): Bu metodlarning ortiqcha yuklanishi (method overloading) yordamida amalga oshiriladi. Metodlar bir xil nomga ega, ammo turli imzolar (argumentlar soni, turi yoki tartibi) bilan.

    class Calculator {
        // add metodining ortiqcha yuklanishi
        public int add(int a, int b) {
            return a + b;
        }
    
        public double add(double a, double b) {
            return a + b;
        }
    }
    
  • Ijro vaqtida ko‘p shakllilik (dinamik ko‘p shakllilik): Bu metodlarni qayta yozish (method overriding) yordamida amalga oshiriladi. O‘g‘il sinfdagi metod ota sinfdagi bilan bir xil imzoga ega va o‘zining alohida amalga oshirishini taqdim etadi. Qaysi metod chaqirilishini haqiqiy ob’ektning haqiqiy turi asosida ijro vaqtida qaror qilinadi.

    class Animal {
        public void sound() {
            System.out.println("Hayvon tovush chiqaradi");
        }
    }
    
    class Dog extends Animal {
        // sound metodini qayta yozish
        @Override
        public void sound() {
            System.out.println("It baqiradi");
        }
    }
    
    class Cat extends Animal {
        // sound metodini qayta yozish
        @Override
        public void sound() {
            System.out.println("Mushuk miyovlaydi");
        }
    }
    
  • Ota sinf / interfeysga havolalar: O‘g‘il sinflarning ob’ektlari ota sinf yoki ular amalga oshiradigan interfeys havolalariga tayinlanishi mumkin. Bu turdagi ob’ektlarni umumiy havola orqali bir xil tarzda ishlash imkonini beradi. Bunday havola orqali qayta yozilgan metod chaqirilganda, ob’ektning haqiqiy turidagi metod ishga tushadi.

    Animal myAnimal = new Dog(); // Dog ob’ektini Animal turidagi havolaga tayinlash
    myAnimal.sound(); // Dog sinfidagi qayta yozilgan sound() metodi chaqiriladi