Junior
Bir metod ne zaman geçersiz kılınmış (overriding) sayılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir metod, alt sınıfta aynı imzaya (metodun adı, parametre sayısı ve tipleri aynı sırayla) sahip bir metodun tanımlanmasıyla yeniden tanımlandığında yeniden tanımlanmış sayılır. Ayrıca:
- Üst sınıftaki metod
final(veya diğer dillerde eşdeğer bir modifikatör) olarak tanımlanmış olmamalıdır, bu da yeniden tanımlamayı engeller. - Alt sınıftaki yeniden tanımlanan metodun erişim seviyesi, üst sınıftaki metoddan daha kısıtlayıcı olamaz.
- Yeniden tanımlanan metod, üst sınıftaki metodla aynı türü döndürebilir veya kovaryant bir tür (orijinal türün alt tipi) olabilir.
- Yeniden tanımlanan metod, üst metodda belirtilen istisnalardan daha genel (veya uyumsuz) istisnalar atamaz.
- Statik metodlar yeniden tanımlanamaz, sadece gizlenebilir (hidden).
Yeniden tanımlanan metoda, üst sınıfa ait bir referans ve alt sınıf nesnesiyle çağrı yapıldığında, alt sınıfın metodunun versiyonu çalıştırılır (çok biçimlilik).
// Java örneği
class Parent {
public void display() { // Üst sınıf metod
System.out.println("Parent display");
}
// final void cannotOverride() { ... } // Bu metod yeniden tanımlanamaz
}
class Child extends Parent {
@Override // @Override anotasyonu, derleyicinin metodun gerçekten yeniden tanımlanıp tanımlanmadığını kontrol etmesine yardımcı olur
public void display() { // Aynı imzaya sahip yeniden tanımlanmış metod
System.out.println("Child display");
}
}