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(); // გადაფარვილი sound() მეთოდი გამოიძახება, რომელიც Dog კლასშია