Java’da bazen metotların hemen bir üst satırında @Override şeklinde bir ifade yer alır. Bu yazıda, ingilizcede annotation olarak isimlendirilen bu ifadenin ne anlama geldiğini ve ne için kullanıldığını izah etmeye çalışacağız.
@Override annotation nedir?
@Override annotation, adından da anlaşılabileceği üzere bir Override belirteci, -notudur. Bilindiği üzere, override işlemi, parent class’da bulunan bir metodun, child class’ta aynı isim ve aynı parametreler ile tekrar kullanılması şeklinde gerçekleşir. Java bu işlemi, compiler’a bildirebilmemiz için @Override şeklinde bir belirteç geliştirmiş. Bu belirteç, sizin de görebileceğiniz örneklerdeki gibi, child class’ta override işlemi için oluşturulan metodun bir üst satırına eklenir.
// Parent class ve içerisindeki metod
class ParentClass {
public void display(){
System.out.println("Parent Class Metodu”);
}
}
// Child class ve override edilen metot
class ChildClass extends ParentClass {
@Override
public void display(){
System.out.println("Child Class Metodu”);
}
@Override nerede, ne için kullanılır?
Java’da override işlemi @Override beliteci bir diğer deyimle @Override annotation kullanılmadan da gerçekleştirilebilir. Fakat @Override programcılar tarafından oldukça yaygın bir şekilde kullanılmaktadır. Bunun temel olarak iki sebebi vardır.
İlk sebep, override işleminin düzgün bir şekilde yapılıp yapılmadığını veya override’ın gerçekleşmemesi durumunda Java compiler’dan bir dönüt alma amacı taşımaktadır. Eğer override işlemi yapılırken, bazı kurallar ihlal edildiyse, örneğin parametrelerde bir değişiklik yapıldıysa veya @Override yazıldığı halde isimde bir değişiklik varsa, yani herhangi bir nedenden ötürü override işlemi düzgün bir şekilde yapılamadıysa compiler uyarı verecektir.
İkinci sebep ise, kod okunabilirliğini arttırmaktır. Bu ifade herhangi bir class’ta görülen bir metodun, overriding olduğunu yani aslında parent class’ta yer alan bir metodun yerine getirilerek oluşturulduğunun anlaşılabilmesine olanak sağlayacaktır. Böylelikle hem compiler daha hızlı ve daha doğru bir şekilde hareket edebilecek aynı zamanda, kodu daha sonra inceleyenler için de açıklayıcı bir not vazifesi taşıyacaktır.