Dynamic Dispatch nedir?

Mayıs 5, 2011

Subclass içinde override edilmiş(overload değil!) bir metod çağırıldığında, subclass içindekinin mi yoksa superclass içindekinin mi çağırılacağının run-time sırasında dinamik olarak belirlenmesine Dynamic Dispatch denir.

Hemen bir örnekle :

1
2
3
4
5
6
7
8
9
public class Hayvan{
        public Hayvan(){}
	public void sesCikar(){System.out.println("AbidikGubidik");}
}
public class Kopek extends Hayvan{
        public Kopek(){}
        @Override
	public void sesCikar(){System.out.println("BarkHavBarkHav");}
}

şeklinde iki class’ım olsun. Kopek sınıfımı, Hayvan sınıfımdan türetmiş olayım. Aşağıdaki işlem sırasında;

Hayvan minnos = new Hayvan();
Hayvan fino = new Kopek();
 
minnos.sesCikar();
fino.sesCikar();

minnos’un çıkaracağı ses bellidir -> “AbidikGubidik”
fino.sesCikar() fonksiyonu çağırıldığındaysa Dynamic Dispatch yapılır. fino’nun referansı hayvan olsa bile, Kopek sınıfıyla initialize edildiğinden fino “BarkHavBarkHav” sesi çıkaracaktır.

Not : Java’da override ettiğiniz bir metodun önüne @Override notunu(annotation) yazmasanız da olur. Yazarsanız, compile time errorların azalmasına, compilerın daha kolay işini görmesine yardımcı olursunuz.

tags: ,
posted in Terimler by Tolpp

Follow comments via the RSS Feed | Yorum yapın | Trackback URL

1 Comment to "Dynamic Dispatch nedir?"

  1. lipsum wrote:

    Paylaşım için teşekkürler :)
    Daha çok zaman bulup daha çok paylaşım yapabilmen dileğiyle :)

Leave Your Comment


 
Bu sitede Wordpress ve MySQL kullanılmaktadır. Tema : Shlomi Noach, openark.org
Ayrıca site Grikare sunucularında ikamet etmektedir.