Middle
Metodun (Overriding) yenidən yazılması nə vaxt baş verir?
sobes.tech Süni İntellekt
AI-dan cavab
Obyekt yönümlü proqramlaşdırmada metodun üst-izlənməsi (Overriding), alt sinfinin atasından miras aldığı metodla eyni adı, parametr siyahısı və geri dönüş tipi olan metodu olması halında baş verir. Bu, alt sinfinin miras alınmış metodun özünəməxsus tətbiqini təmin etməsinə imkan verir.
Üst-izlənmə üçün əsas şərtlər:
- Miras: Alt sinif, atasından miras almalıdır.
- Metodun imzası: Alt sinifdə üst-izlənən metod, atasındakı metodla eyni imzaya (metod adı və parametr tiplərinin siyahısı, onların ardıcıllığı və sayı) malik olmalıdır. Bəzi dillərdə (məsələn, Java) geri dönüş tipi də uyğun olmalı və ya kovariant olmalıdır.
- Giriş modifikatorları: Alt sinifdə üst-izlənən metodun giriş modifikatoru, atasındakı metoddan daha məhdud olmamalıdır.
- İstisna edilənlər: Statik (
static), final (finalJava-da,sealedC#-da) və private (private) metodlar çox formallıqda iştirak etmir.
Java nümunəsi:
// Atasınıf
class Animal {
public void sound() {
// Standart tətbiq
System.out.println("Heyvan səs çıxarır");
}
}
// Alt sinif, sound() metodunu üst-izləyir
class Dog extends Animal {
@Override // Kompilyator tərəfindən yoxlama üçün annotasiya
public void sound() {
// Xüsusi tətbiq
System.out.println("İt havlayır");
}
}
class Main {
public static void main(String[] args) {
Animal mənimHeyvanım = new Animal();
Animal mənimItim = new Dog(); // Çox formallıq
Dog mənimIt = new Dog();
mənimHeyvanım.sound(); // Animal-dan sound() çağırır
mənimItim.sound(); // Dog-dan üst-izlənmiş sound() çağırır (çox formallıq sayəsində)
mənimIt.sound(); // Dog-dan üst-izlənmiş sound() çağırır
}
}
Python nümunəsi:
# Atasınıf
class Animal:
def sound(self):
# Standart tətbiq
print("Heyvan səs çıxarır")
# Alt sinif, sound() metodunu üst-izləyir
class Dog(Animal):
def sound(self):
# Xüsusi tətbiq
print("İt havlayır")
# İstifadə
mənim_hayvanım = Animal()
mənim_itim = Dog() # Çox formallıq
mənim_it = Dog()
mənim_hayvanım.sound() # Animal-dan sound() çağırır
mənim_itim.sound() # Dog-dan üst-izlənmiş sound() çağırır (çox formallıq sayəsində)
mənim_it.sound() # Dog-dan üst-izlənmiş sound() çağırır
Üst-izlənmə, iş vaxtında çox formallıq əldə etmək üçün istifadə olunur və obyektin faktiki növünə görə müxtəlif əməliyyatların həyata keçirilməsinə imkan verir, ana sinfə istinad etməyə baxmayaraq. Bu, elastik və genişlənə bilən sistemlər qurmaq üçün obyekt yönümlü proqramlaşdırmanın əsas prinsipidir.