Junior
როდის ითვლება მეთოდი გადაფარებულად (overriding)?
sobes.tech AI
პასუხი AI-სგან
ობიექტზე ორიენტირებულ პროგრამირებაში მეთოდი ითვლება გადაფარებულად (overriding), როდესაც:
- იგი განსაზღვრულია ქვესინფაში იმავე სახელით, დაბრუნების ტიპით და პარამეტრების სიით (ხელმოწერით), როგორც სუპერკლასის მეთოდი.
- სუპერკლასის მეთოდი არ არის
private. - ქვესინფის მეთოდი არ აქვს უფრო მკაცრი წვდომის მოდიფიკატორი, ვიდრე სუპერკლასის მეთოდი.
- შემთხვევებში, როდესაც გამონაკლისები იჩენს თავს, გადაფარებული მეთოდი არ შეუძლია გამოაცხადოს შემოწმებული გამონაკლისები ([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");
}
}