Sobes.tech
Middle

Kādi polimorfisma īstenošanas mehānismi pastāv Java?

sobes.tech AI

Atbilde no AI

  • ** Laika polimorfisms (statiskā polimorfisms)**: tiek īstenots, izmantojot metožu pārlādēšanu (method overloading). Metodes ir ar vienādu nosaukumu, bet dažādām signatūrām (argumentu skaits, tips vai secība).

    class Calculator {
        // add metodes pārlādēšana
        public int add(int a, int b) {
            return a + b;
        }
    
        public double add(double a, double b) {
            return a + b;
        }
    }
    
  • Darbo laika polimorfisms (dinamisks polimorfisms): tiek īstenots, pārrakstot metodes (method overriding). Apakšklasē metode ir ar to pašu signatūru kā vecākklasē, un nodrošina savu īstenojumu. Lēmums, kuru metodi izsaukt, tiek pieņemts izpildes laikā, atkarībā no objekta faktiskā tipa.

    class Animal {
        public void sound() {
            System.out.println("Dzīvnieks rada skaņu");
        }
    }
    
    class Dog extends Animal {
        // Pārrakstīt metodi sound
        @Override
        public void sound() {
            System.out.println(" suns rejas");
        }
    }
    
    class Cat extends Animal {
        // Pārrakstīt metodi sound
        @Override
        public void sound() {
            System.out.println("Kaķis miauk");
        }
    }
    
  • Saknesklases / saskarnes atsauces: Apakšklases objekti var tikt piešķirti saknesklases vai to realizēto saskarnes atsaucēm. Tas ļauj vienādi apstrādāt dažādu tipu objektus caur kopēju atsauci. Pārrakstītās metodes izsaukums šādā atsaucē novedīs pie faktiskā objekta tipa metodes izpildes.

    Animal myAnimal = new Dog(); // Dog objekts piešķirts kā Animal tips
    myAnimal.sound(); // Izsaukts pārrakstītais sound() metodes no Dog klases