Sobes.tech
Junior

როდის ითვლება მეთოდი გადაფარებულად (overriding)?

sobes.tech AI

პასუხი AI-სგან

ობიექტზე ორიენტირებულ პროგრამირებაში მეთოდი ითვლება გადაფარებულად (overriding), როდესაც:

  1. იგი განსაზღვრულია ქვესინფაში იმავე სახელით, დაბრუნების ტიპით და პარამეტრების სიით (ხელმოწერით), როგორც სუპერკლასის მეთოდი.
  2. სუპერკლასის მეთოდი არ არის private.
  3. ქვესინფის მეთოდი არ აქვს უფრო მკაცრი წვდომის მოდიფიკატორი, ვიდრე სუპერკლასის მეთოდი.
  4. შემთხვევებში, როდესაც გამონაკლისები იჩენს თავს, გადაფარებული მეთოდი არ შეუძლია გამოაცხადოს შემოწმებული გამონაკლისები ([checked exceptions]), რომლებიც უფრო ზოგადია, ვიდრე გადაფარებულ მეთოდში მითითებული.

როდესაც გადაფარებულ მეთოდს იძახიან ქვესინფის ობიექტზე, შესრულდება ქვესინფის მეთოდის ვერსია. ეს არის პოლიმორფიზმის მაგალითი შესრულების დროს.

Java-ს მაგალითი:

// java

class Animal {
    public void makeSound() {
        System.out.println("ზოგადი ცხოველის ხმა");
    }
}

class Dog extends Animal {
    @Override // @Override ანოტაცია ადასტურებს, რომ მეთოდი გადაფარებულია
    public void makeSound() {
        System.out.println("ჰაუ ჰაუ");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("მiau");
    }
}