06.03.2015 Views

Java Kitabı

JAva`nın çalışma mantığıyla başlayıp basitten gelişmişe iyi bir kaynak

JAva`nın çalışma mantığıyla başlayıp basitten gelişmişe iyi bir kaynak

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Kartal avYakala<br />

Hayvan avYakala<br />

Kartal avYakala<br />

Aynı uygulamamızı tekrardan çalıĢtırıyorum;<br />

Timsah avYakala<br />

Timsah avYakala<br />

Hayvan avYakala<br />

Tekrar çalıĢtırıyorum;<br />

Timsah avYakala<br />

Hayvan avYakala<br />

Kartal avYakala<br />

Görüldüğü üzere dizi içerisindeki elemanlar her sefersinde farklı olabilmektedir, dizi içerisindeki<br />

elemanlar ancak çalıĢma anında (runtime) belli oluyorlar. h[j].avYakala() derken, derleme anında<br />

(compile-time) hangi nesnenin avYakala() yordamının çağrılacağını <strong>Java</strong> tarafından bilinemez, bu olay<br />

ancak çalıĢma anında (run-time) bilinebilir. Geç bağlama özelliği bu noktada karĢımıza çıkar. Geç<br />

bağlamanın (late-binding) diğer isimleri, dinamik bağlama (dynamic-binding) veya çalıĢma anında<br />

bağlamadır. (runtime-binding). ()<br />

6.3. Final ve Geç Bağlama<br />

5. bölümde, final özelliğinin kullanılmasının iki sebebi olabileceğini belirtmiĢtik. Bunlardan bir tanesi<br />

tasarım diğeri ise verimliliktir. Verimlilik konusu geç bağlama (late binding) özelliği ile aydınlamıĢ<br />

bulunmaktadır, Ģöyle ki, eğer biz bir sınıfı final yaparsak, bu sınıfa ait tüm yordamları final yapmıĢ<br />

oluruz veya eğer istersek tek baĢına bir yordamı da final yapabiliriz. Bir yordamı final yaparak Ģunu<br />

demiĢ oluruz, bu yordam, türetilmiĢ olan alt sınıfların içerisindeki diğer yordamlar tarafından iptal<br />

edilemesin (override) Eğer bir yordam iptal edilemezse o zaman geç bağlama (late binding) özelliği de<br />

ortadan kalkar. ()<br />

Uygulama içerisinde herhangi bir nesneye ait normal bir yordam (final olmayan) çağrıldığında, <strong>Java</strong>,<br />

acaba doğru nesnenin uygun yordam mu çağrılıyor diye bir kontrol yapar, daha doğrusu geç bağlamaya<br />

(late-binding) ihtiyaç var mı kontrolü yapılır. Örneğin Kedi sınıfını göz önüne alalım. Kedi sınıfı final<br />

olmadığından dolayı bu sınıftan türetilme yapabiliriz. ()<br />

Örnek: KediKaplan.java ()<br />

class Kedi {<br />

}<br />

public void yakalaAv() {<br />

System.out.println("Kedi sinifi Av yakaladi");<br />

}<br />

class Kaplan extends Kedi {<br />

public static void goster(Kedi k) {<br />

k.yakalaAv();<br />

}<br />

140

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!