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.

teleText()");<br />

}<br />

}<br />

public class Televizyon {<br />

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

// yukarı cevirim ( upcasting )<br />

Xmodel x_model_kumanda = new Ymodel();<br />

x_model_kumanda.sesAc();<br />

x_model_kumanda.sesKapa();<br />

x_model_kumanda.kanalDegistir();<br />

}<br />

}<br />

//!! hata !!, bu kumandanın böyle bir düğmesi yok :)<br />

// x_model_kumanda.teleText() ;<br />

Yukarı çevirim (upcasting) olayında iki taraf vardır, bir tanesi heap alanında nesnenin kendisi diğer tarafta<br />

yığın (stack) alanında bulunan referans. Olaylara televizyon ve kumanda boyutunda bakarsak iĢin sırrı<br />

çözülmeye baĢlar. Elimizde Xmodel televizyon kumandası olduğunu düĢünün ama kumanda Ymodel bir<br />

televizyonu gösterirsin (gösterebilir çünkü arada kalıtım iliĢkisi vardır (Ymodel televizyon bir Xmodel<br />

televizyondur), o zaman karĢımızda duran Ymodel televizyonun teleText() özelliği olmasına rağmen<br />

bunu kullanamayız çünkü Xmodel bir televizyon kumandası, Xmodel televizyon için tasarlandığından, bu<br />

kumandanın üzerinde teleText() düğmesi olmayacaktır. Anlattıklar Ģekil üzerinde gösterilirse: ()<br />

6.9. Aşağıya Çevirim (Downcasting)<br />

Şekil-6.7. Kalıtım ve Yukarı Çevirim<br />

AĢağıya çevirim (downcasting), yukarı çevirim (upcasting) iĢleminin tam tersidir. AĢağıya çevirim<br />

(downcasting), daha genel bir tipten, daha özellikli bir tipe doğru geçiĢ demektir ve tehlikelidir. Tehlikelidir<br />

çünkü çevrilmeye çalıĢılan daha özellikli tipe doğru çevirim esnasında sorun çıkma riski yüksektir. <strong>Java</strong><br />

programlama dilinde aĢağıya çevirim (downcasting) yaparken, hangi tipe doğru çevirim yapılacağı açık<br />

olarak belirtmelidir. Fakat yukarı çevirim (upcasting) iĢleminde böyle bir belirteç koyma zorunluluğu<br />

yoktur çünkü oradaki olay daha özellikli bir tipten daha genel bir tipe doğru çevirimdir; yani,<br />

güvenlidir. Anlattıkları örnek üzerinde gösterirsek: ()<br />

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

class Xmodel {<br />

public void sesAc() {<br />

System.out.println("X model televizyon sesAc()");<br />

}<br />

public void sesKapa() {<br />

155

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

Saved successfully!

Ooh no, something went wrong!