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.

class Calisan {<br />

public void isYap(double a) {<br />

System.out.println("Calisan.isYap()");<br />

}<br />

}<br />

class Mudur extends Calisan {<br />

public void isYap(int a) { // adas yordam (overloaded)<br />

System.out.println("Mudur.isYap()");<br />

}<br />

}<br />

public static void main(String args[]) {<br />

Mudur m = new Mudur();<br />

m.isYap(3.3);<br />

}<br />

Her Müdür bir Çalışandır ilkesinden yola çıkılarak yazılmıĢ bu örneğimizdeki büyük hata iki kavramın -<br />

(iptal etmek ve adaĢ yordamlarının)- birbirlerine karıĢtırılmasıdır. Böyle bir hata çok kolay bir Ģekilde<br />

yapılabilir ve fark edilmesi de bir o kadar güçtür. Buradaki yanlıĢlık, yordamların parametrelerindeki<br />

farklılıktan doğmaktadır. Kodu yazan kiĢi, ana sınıfa ait olan isYap() yordamı iptal ettiğini kolaylıkla<br />

zannedebilir ama aslında farkına bile varmadan adaĢ yordam (overloaded) oluĢturmuĢtur. Uygulamanın<br />

sonucu aĢağıdaki gibi olur: ()<br />

Calisan.isYap()<br />

5.5. Yukarı Çevirim (Upcasting)<br />

Kalıtım (inheritance) kavramı sayesinde, türeyen sınıf ile türetilen sınıf arasında bir iliĢki kurulmuĢ olur.<br />

Bu iliĢkiyi Ģöyle açıklayabiliriz ―türeyen sınıfın tipi, türetilen sınıf tipindedir‖. Yukarıdaki örnek<br />

tekrarlanırsa, ―her kaplan bir kedidir‖ denilebilir. Kaplan ve Kedi sınıfları arasındaki iliĢki kalıtım kavramı<br />

sayesinde sağlanmıĢ olur. Her kaplan bir kedidir veya her müdür bir çalıĢandır örneklerimiz sadece sözel<br />

örnekler değildir, bu iliĢki <strong>Java</strong> tarafından somut olarak desteklenmektedir. ()<br />

BaĢka bir kalıtım örneğini Ģöyle açıklayabiliriz, her futbolcu bir sporcudur. Bu ifade bize, Sporcu sınıfının<br />

içerisindeki yordamların otomatik olarak Futbolcu sınıfının içerisinde olduğunu söyler, yani Sporcu<br />

sınıfına gönderilen her mesaj rahatlıkla Futbolcu sınıfına da gönderilebilir çünkü Futbolcu sınıfı Sporcu<br />

sınıfından türemiĢtir. <strong>Java</strong>‘nın bu iliĢkiye nasıl somut olarak destek verdiğini aĢağıdaki örnekte görülebilir:<br />

()<br />

Örnek-5.17: Spor.java ()<br />

class KontrolMerkezi {<br />

public static void checkUp(Sporcu s) {<br />

//..<br />

s.calis();<br />

}<br />

}<br />

class Sporcu {<br />

public void calis() {<br />

System.out.println("Sporcu.calis()");<br />

}<br />

128

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

Saved successfully!

Ooh no, something went wrong!