Metot aşırı yükleme ve metot ezme sürekli kullanılan ve sıkça karıştırılan kavramlardır. Metot ezme bir sınıftaki metoda, başka bir sınıfta yeni fonksiyonalite eklemeye denir.
Bir metodun ezilebilmesi için ;
- Metotların birbirinden türeyen sınıflarda bulunması gerekir. (is-a ilişkisi olmalıdır)
- Metot imzalarının aynı olması gerekir. (bkz. NOT)
- Metotların dönüş tiplerinin ya aynı ya da ezilen metodun dönüş tipinden türeyen bir tip olması gerekir.
- Ezilen metodun erişim denetleyicisi ne ise ezen metodun erişim denetleyici de ya aynı ya da daha kapsamlı olmalıdır.
- Metot bir Exception fırlatıyorsa ezen metot da ya aynı tipte ya da o Exception’dan türeyen başka bir tipte hata fırlatmalıdır.
[box type=”warning”] NOT : Bir metodun ismine, parametre sayısı ve tipine “metot imzası” denir.[/box]
[codesyntax lang=”java” lines=”no”]
package com.javauzmani.overriding; public class Office { protected void kaydet() throws RuntimeException { // metot işlemleri } }
[/codesyntax]
[codesyntax lang=”java” lines=”no”]
package com.javauzmani.overriding; public class Word extends Office { protected void kaydet() throws RuntimeException { // metot işlemleri } /* protected void kaydet() throws ArrayIndexOutOfBoundsException { // metot işlemleri } public void kaydet() throws RuntimeException { // metot işlemleri } */ }
[/codesyntax]
Office sınıfından türeyen Word sınıfında kaydet metodunu yukarıdaki gibi birden fazla şekilde ezebiliriz.