tolpp.com
yazılım ve programlama günlüğü

Dynamic Dispatch nedir? May 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 : ş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; 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.