Sobes.tech
Middle

Java-da çox formallığın həyata keçirilməsi üçün hansı mexanizmlər mövcuddur?

sobes.tech Süni İntellekt

AI-dan cavab

  • Tərcümə vaxtı çox formallıq (statik çox formallıq): Bu, metodların yüklənməsi (method overloading) vasitəsilə həyata keçirilir. Metodlar eyni adı, lakin fərqli imzalar (argumentlərin sayı, tipi və ya ardıcıllığı) ilə olur.

    class Calculator {
        // add metodunun yüklənməsi
        public int add(int a, int b) {
            return a + b;
        }
    
        public double add(double a, double b) {
            return a + b;
        }
    }
    
  • İcrə vaxtı çox formallıq (dinamik çox formallıq): Bu, metodların yenidən yazılması (method overriding) vasitəsilə həyata keçirilir. Alt sinifdəki metod, üst sinifdəki ilə eyni imzaya malikdir və özünəməxsus tətbiqini təmin edir. Hansı metodun çağırılacağı, obyektin faktiki növünə əsasən icra vaxtında qərar verilir.

    class Animal {
        public void sound() {
            System.out.println("Heyvan səs çıxarır");
        }
    }
    
    class Dog extends Animal {
        // sound metodunun yenidən yazılması
        @Override
        public void sound() {
            System.out.println("İt havlayır");
        }
    }
    
    class Cat extends Animal {
        // sound metodunun yenidən yazılması
        @Override
        public void sound() {
            System.out.println("Məxmər miyovlayır");
        }
    }
    
  • Üst sinfə / interfeysə istinadlar: Alt sinif obyektləri, onları həyata keçirən üst sinfə və ya interfeyslərə istinad edilə bilər. Bu, müxtəlif tiplərdəki obyektləri ümumi istinad vasitəsilə vahid şəkildə işləməyə imkan verir. Belə bir istinad vasitəsilə yenidən yazılmış metod çağırıldıqda, obyektin faktiki növündən asılı olaraq metodun versiyası icra edilir.

    Animal myAnimal = new Dog(); // Dog obyektinin Animal növündə istinada təyin olunması
    myAnimal.sound(); // Dog sinifindən yenidən yazılmış sound() metodu çağrılır