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.

Ġsimsiz sınıflarda, yerel sınıflar gibi içinde bulundukları yordamın sadece final olarak tanımlanmıĢ yerel<br />

değiĢkenlerine eriĢebilirler. ()<br />

Yukarıdaki örneğimizde, isimsiz sınıfımız, Toplayici arayüzüne eriĢip onun gövdesiz sınıflarını iptal<br />

etmiĢtir, buraya kadar herĢey normal. Peki eğer isimsiz sınıfımız, yapılandırıcısı parametre olan bir sınıftan<br />

türetilseydi nasıl olacaktı? Belirtildiği üzere isimsiz sınıfların yapılandırıcısı olamaz. ()<br />

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

abstract class BuyukToplayici {<br />

private int deger ;<br />

public BuyukToplayici(int x) {<br />

deger = x ;<br />

}<br />

public int degerDondur() {<br />

return deger ;<br />

}<br />

public abstract int hesaplamaYap() ; // iptal edilmesi gerek<br />

}<br />

public class Hesaplama9 {<br />

public BuyukToplayici degerGoster( int gonderilen )<br />

{<br />

return new BuyukToplayici( gonderilen ) {<br />

public int hesaplamaYap() { //iptal etti (override)<br />

return super.degerDondur() + 5 ;<br />

}<br />

}; // noktali virgul sart<br />

} // degerGoster , yordam sonu<br />

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

Hesaplama9 h9 = new Hesaplama9();<br />

BuyukToplayici bt = h9.degerGoster(5);<br />

int sonuc = bt.hesaplamaYap();<br />

System.out.println("Sonuc = " + sonuc );<br />

}<br />

} // class Hesaplama9<br />

BuyukToplayici sınıfı soyuttur, bunun anlamı bu sınıfın içerisinde en az bir tane gövdesiz yordam<br />

olduğudur. BuyukToplayici sınıfının içerisindeki hesaplamaYap() gövdesiz<br />

yordamını, BuyukToplayici sınıfından türetilen alt sınıflar tarafından iptal edilmek zorundadır. ()<br />

Bu örneğimizde ilginç olan iki nokta vardır. Birincisi, isimsiz bir sınıfın, soyut bir yordam dan türetilmesi,<br />

ikincisi ise türetilme yapılan BuyukToplayici sınıfına ait yapılandırıcısının parametre almasıdır. Ġsimsiz<br />

sınıfımızın yapılandırıcısı olamayacağından dolayı, BuyukToplayici sınıfına ait parametre alan<br />

yapılandırıcıyı burada çağıramayız. Bu iĢlemi BuyukToplayici sınıfından türetilen isimsiz sınıfımızı<br />

oluĢtururken yapmalıyız. ()<br />

Ġsimsiz sınıfların içerisinde, onları çevreleyen yordamların final olmayan yerel değiĢkenleri kullanılamaz.<br />

―Peki ama bu örnekte kullanılıyor...‖ diyebilirsiniz. ()<br />

198

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

Saved successfully!

Ooh no, something went wrong!