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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!