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.

Burada yapılan iĢ, Calisan sınıfından yeni sınıflar türetmektir, bu yeni türetilmiĢ sınıfların (GenelMudur,<br />

AnalizProgramci, SistemProgramci, Sekreter) calis() yordamlarını çağırmak için ekstra bir yük<br />

üstlenilmedi (mesaiBaslat() yordamının içerisine dikkat edersek ). Polimorfizm ve tabii ki geç<br />

bağlama sayesinde bu iĢler otomatik olarak gerçekleĢmektedir. ()<br />

6.6. Soyut Sınıflar ve Yordamlar (Abstract Classes and Methods)<br />

Soyut kavramını anlatmadan evvel, IsYeri.java ve BuyukIsyeri.java örneklerini inceleyelim. Bu<br />

uygulamaların içerisinde hiç bir iĢ yapmayan ve sanki boĢuna oraya yerleĢtirilmiĢ hissi veren bir sınıf göze<br />

çarpar; evet bu Calisan sınıfıdır. Calisan sınıfını daha yakından bakılırsa; ()<br />

Gösterim-6.3:<br />

class Calisan {<br />

public String pozisyon = "Calisan";<br />

public void calis() {}<br />

}<br />

Yukarıda görüldüğü üzere Calisan sınıfı hiç bir iĢ yapmamaktadır. Akıllara Ģöyle bir soru daha gelebilir<br />

"Madem ki Calisan sınıfı hiç bir iĢ yapmıyor, ne diye onu oraya yazdık"; cevap: birleĢtirici bir rol oynadığı<br />

için, Calisan sınıfını oraya yazdık diyebilirim. Olayları biraz daha detaylandıralım. ()<br />

Soyut sınıflar, Ģu ana kadar bildiğimiz sınıflardan farklıdırlar. Soyut (abstract) sınıflarımızı direk new()<br />

ile oluĢturamayız. Soyut sınıfların var olmasındaki en büyük sebeplerden biri birleĢtirici bir rol<br />

oynamalarıdır. Soyut bir sınıftan türetilmiĢ alt sınıflara ait nesneler, çok rahat bir Ģekilde yine bu soyut sınıf<br />

tipindeki referanslara bağlanabilirler (yukarı çevirim). Böylece polimorfizm ve geç bağlamanın<br />

kullanılması mümkün olur. ()<br />

Bir sınıfın soyut olması için, bu sınıfın içerisinde en az bir adet soyut yordamının bulunması gerekir. Soyut<br />

yordamların gövdesi bulunmaz; yani, içi boĢ hiçbir iĢ yapmayan yordam görünümündedirler. Soyut bir<br />

sınıfdan türetilmiĢ alt sınıflar, bu soyut sınıfın içerisindeki soyut yordamları kesin olarak iptal etmeleri<br />

(override) gerekmektedir. Eğer türetilmiĢ sınıflar, soyut olan ana sınıflarına ait bu soyut yordamları iptal<br />

etmezlerse, derleme anında (compile-time) hata ile karĢılaĢılır. ()<br />

Gösterim-6.4:<br />

abstract void calis() ; // gövdesi olmayan soyut<br />

yordam<br />

Soyut sınıfların içerisinde soyut yordamlar olacağı gibi, gövdeleri olan, yani iĢ yapan yordamlarda<br />

bulunabilir. Buraya kadar anlattıklarımızı bir uygulama üzerinde pekiĢtirelim; ()<br />

Örnek: AbIsYeri.java, ()<br />

abstract class Calisan {<br />

public String pozisyon="Calisan" ;<br />

public abstract void calis() ;// soyut yordam<br />

public void zamIste() { // soyut olmayan yordam<br />

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

}<br />

}<br />

148

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

Saved successfully!

Ooh no, something went wrong!