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.

tüm gövdesiz yordamlarını (soyut yordamlar) kesin olarak iptal etmesi (override) gerektiğini de belirttik.<br />

Peki eğer soyut bir sınıf (abstract class) bir arayüze ulaĢırsa, arayüze ait gövdesiz yordamları kesin olarak,<br />

kendi içerisinde iptal etmeli mi? Bir örnek üzerinde incelersek; ()<br />

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

interface Hayvan {<br />

public void avlan() ;<br />

}<br />

abstract class Kedi implements Hayvan {<br />

}<br />

Yukarıdaki örneğimizi derleyebilir (compile) miyiz? Derlense bile çalıĢma anında (run-time) hata oluĢturur<br />

mu? Aslında olaylara kavramsal olarak bakıldığında çözüm yakalanmıĢ olur. Soyut sınıfların amaçlarından<br />

biri aynı arayüz özelliğinde olduğu gibi birleĢtirici bir rol oynamaktır. Daha açık bir ifade kullanırsak, hem<br />

arayüzler olsun hem de soyut sınıflar olsun, bunların amaçları kendilerine ulaĢan normal sınıflara,<br />

kendilerine ait olan gövdesiz yordamları iptal ettirmektir (override). O zaman yukarıdaki örnekte<br />

soyut olan Kedi sınıfı, Hayvan arayüzüne (interface) ait gövdesiz (soyut) avlan() yordamını iptal<br />

etmek zorunda değildir. Daha iyi anlaĢılması açısından yukarıdaki örneği biraz daha geliĢtirelim ama<br />

öncesinde UML diyagramını çıkartalım; ()<br />

Şekil-7.2. Arayüzler ve Soyut Sınıflar<br />

UML diyagramından görüleceği üzere, Kaplan sınıfı, avlan() ve takipEt() yordamlarını (gövdesizsoyut<br />

yordamlarını) iptal etmek zorundadır. UML diyagramını <strong>Java</strong> uygulamasına dönüĢtürülürse; ()<br />

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

interface Hayvan {<br />

163

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

Saved successfully!

Ooh no, something went wrong!