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.

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!