Junior
Hansı zaman metod override edilir (overriding)?
sobes.tech Süni İntellekt
AI-dan cavab
Bir metod, törəmə sinifdə eyni imzaya (metodun adı, parametr sayı və tipləri eyni ardıcıllıqla) malik metodun elan olunması ilə yenidən yazılmış sayılır. Bundan əlavə:
- Ata sinifdəki metod
final(və ya digər dillərdə ekvivalent modifikator) kimi elan edilməməlidir, bu metodun yenidən yazılmasını qadağan edir. - Törəmə sinifdə yenidən yazılan metodun giriş səviyyəsi ata sinifdəki metoddan daha məhdud olmamalıdır.
- Yenidən yazılan metod, ata sinifdəki metodla eyni növü və ya kovariant növü (orijinal növün alt tipi) qaytara bilər.
- Yenidən yazılan metod, ata sinifdə elan olunanlardan daha ümumi (və ya uyğun olmayan) istisnalar atmayacaq.
- Statik metodlar yenidən yazıla bilməz, yalnız gizlənə bilər (hidden).
Yenidən yazılmış metoda ata sinifə aid referans və törəmə sinif obyekti ilə çağırıldıqda, törəmə sinifin versiyası işləyir (polimorfizm).
// Java nümunəsi
class Parent {
public void display() { // Ata sinifdə metod
System.out.println("Parent display");
}
// final void cannotOverride() { ... } // Bu metod yenidən yazıla bilməz
}
class Child extends Parent {
@Override // @Override annotasiyası, kompilatorun metodun həqiqətən yenidən yazıldığını yoxlamasına kömək edir
public void display() { // Yenidən yazılmış metod - eyni imza
System.out.println("Child display");
}
}