Yükleniyor...

Java'da Abstract Classes

Ebeveyn sinif en az bir metodu cocuklarin doldurmasi icin govdesiz birakmaliysa onu abstract isaretleyin. abstract void horn(); ve park yazdiran normal park metodu ile abstract class Machine yazin. class Truck extends Machine yazin ve horn icin honk yazdiran bir govde verin. Yard.java icinde bir Truck olusturun, t.horn() cagirin, sonra t.park() cagirin. javac Yard.java ile derleyin ve java Yard calistirin. Ekran honk, sonra park gostermelidir. Ikinci demo Car ekler boylece iki cocuk horn metodunu farkli doldurur. Polymorphism'i bir sonraki sayfaya birakin — bu ders ebeveynin bitmemis metodu ve onu tamamlayan cocuktur.

Abstract metodu cocukta doldurun

Enums sayfasi sabit adlari listeliyordu. Bu sayfa bilerek bir metodu bitmemis birakir. Yard.java dosyasini acin. Public sinif adini Yard tutun. Abstract hikayesini gomuyorsa kalan enum Level demolarini, Signal / implements dosyalarini, yol demolarini ve herhangi bir klavye Scanner satirini silin. Program yazma beklememelidir. Import satiri gerekmez.
Abstract ebeveyni diger tiplerin ustunde bildirin:
abstract class Machine {
abstract void horn();
void park() {
System.out.println("park");
}
}
Abstract metot noktali virgul ile biter ve { } govdesi yoktur. Normal park metodu her cocugun yeniden kullanabilmesi icin tam govde tutar.
Cocugu extends Machine ile bildirin. horn doldurun:
void horn() {
System.out.println("honk");
}
Ebeveynde listelenen her abstract metodu doldurmalisiniz. Bu sayfada yalnizca horn vardir. main icinde new Machine() yazmayin — abstract sinif tek basina nesne olarak olusturulmaz.
Yard.main icinde:
Truck t = new Truck();
t.horn();
t.park();
Ilk cagri Truck uzerindeki govdeyi calistirir. Ikinci cagri Machine uzerindeki ortak govdeyi calistirir.

Yard Truck fills abstract horn then park

java
abstract class Machine {
    abstract void horn();
    void park() {
        System.out.println("park");
    }
}

class Truck extends Machine {
    void horn() {
        System.out.println("honk");
    }
}

public class Yard {
    public static void main(String[] args) {
        Truck t = new Truck();
        t.horn();
        t.park();
    }
}

Yard.java dosyasini tutan klasorden javac Yard.java calistirin. Parantezler, suslu parantezler ve noktali virguller uyustugunda javac kendi satirini yazmaz. Sonra java Yard calistirin — java Yard.java degil. Calistirma komutundan .java son ekini cikarin. Adin Yard ile eslesmesi icin dosyada bir public sinif tutun. Yardimci tipler Machine ve Truck bu baslangic seklinde public olmadan kalir.
Ekran honk, sonra park gosterir. Calistirmayi bir kez adim adim izleyin. Java Yard.main ile baslar. new Truck() abstract horn metodunu tamamlamis bir truck olusturur. t.horn() degeri honk basar. t.park() zaten var olan ebeveyn govdesinden park basar. Bitmemis metot, cocuk govdeyi yazana kadar yalnizca bir gereksinim olarak durdu.
javac reddederse uc seyi kontrol edin. Birincisi, ebeveyn sinif satiri abstract class Machine demelidir. Ikincisi, bitmemis metot abstract demeli ve ; ile bitmelidir. Ucuncusu, Truck gercekten govdeli horn yazmalidir. Hala bir enum dosyasindan MEDIUM goruyorsaniz abstract ogretim dosyasina gecin ve java Yard yeniden calistirin. new Machine() denerseniz javac reddeder — bu sayfada beklenen budur.
Ekrana bakarken kurali sesli soyleyin: abstract ebeveyn eksik metodu adlandirir, cocuk doldurur, ortak metotlar yine calisir. Henuz bir cok ebeveyn tipinde degiskenle uzun bir polymorphism gecidi uydurmayin. O hikaye sonraki dersi bekler.

Iki cocuk horn metodunu farkli doldurur

Ikinci program ayni abstract Machine tutar. Truck hala honk basar. Yeni bir Car beep basar. main ikisini olusturur, her horn cagirir, sonra truck uzerinde park cagirir.

Yard Truck and Car fill horn then park

java
abstract class Machine {
    abstract void horn();
    void park() {
        System.out.println("park");
    }
}

class Truck extends Machine {
    void horn() {
        System.out.println("honk");
    }
}

class Car extends Machine {
    void horn() {
        System.out.println("beep");
    }
}

public class Yard {
    public static void main(String[] args) {
        Truck t = new Truck();
        Car c = new Car();
        t.horn();
        c.horn();
        t.park();
    }
}

javac Yard.java ile derleyin, sonra java Yard calistirin. Ekran honk, sonra beep, sonra park gosterir. Her cocuk ayni abstract adi kendi yazdirmasiyla doldurdu. Ortak park govdesi hala Machine den gelir. Hala asla new Machine() yazmazsiniz.
Ebeveyni bir kez daha okuyun: bir abstract metot, bir normal metot. Cocuklari okuyun: her biri horn yazar, hicbiri bu sayfada park yeniden yazmaz. Bu ayrim ogretim noktasidir. Car extends Machine iken Car uzerinde horn atlanirsa javac reddeder cunku her abstract metot doldurulmalidir.
Yakinlarda enum demolari duruyorsa tarih olarak tutun. Bu ders icin abstract ogretim dosyasini calistirin boylece ekran metot doldurmalarini gostersin, MEDIUM degil. javac yinelenen public siniflardan sikayet ederse yalnizca Yard public kalsin.

Enums ve interfaces ile karsilastirma

Enums sayfasinda Level sabit adlari listeliyordu. Interfaces sayfasinda implements bos interface metotlarini dolduruyordu. Bu sayfada abstract class artı extends, bir cocuk govde yazana kadar bir sinif metodunu bitmemis birakir. Hala Yard.java derler ve java Yard calistirirsiniz. Yeni tokenlar abstract class, abstract void horn(); ve govdeyi verip park yeniden kullanan cocuktur.
Kalan bir enum Level dosyasi hala aciksa sabitleri ve belki bir switch gorursunuz. Ustte abstract class Machine gosterilsin ve main bir Truck olustursun diye abstract dosyasina gecin. Yalnizca ebeveyn tipinde degiskenleri karistiran polymorphism demolarini bu sayfanin disinda tutun. Klavye girisini bu sayfanin disinda tutun.

Bu sayfa polymorphism icin ne birakir

Bu sayfa abstract metotlari somut cocuklarda bitirir. Sonraki sayfa polymorphism gosterir; bir ebeveyn tipinde degisken farkli cocuk nesneleri tutabilir ve eslesen metot govdesini cagirabilir. Burada abstract ebeveynler ve doldurulmus cocuklarla kalin. Henuz bir cok cocuga isaret eden Machine degiskenleri listesi zorunlu kilmayin.
Sonra polymorphism demolari yazdiginizda yine siklikla abstract veya siradan bir ebeveyn metot adindan baslarsiniz. Bu sayfayi o komsu hikayenin bitmemis-metot yarisi olarak gorun. Polymorphism dersini acmadan once her iki Yard demosunu honk sonra park — ve sonra honk, beep, park — otomatik hissedilene kadar bitirin.

Polymorphism oncesi

abstract class Machine bildirebilir, Truck uzerinde horn doldurabilir ve honk sonra park gorebilirsiniz. Kendi horn metoduyla Car ekleyip honk, sonra beep, sonra park gorebilirsiniz. Tutulan her demo icin Yard.java derleyin ve java Yard calistirin. Cocuk abstract metodu bitirdi. Sonraki sayfa polymorphismdir; ebeveyn tipinde bir referans uzerinden cagrilar cocuk govdesini secer.
Net bir abstract doldurma artı ortak park icin tek-truck demosunu tutun. Net bir doldurma cifti icin iki-cocuk demosunu tutun. Polymorphism gecit dosyalarini bu sayfanin disinda tutun. Bu uc aliskanlik ilerlemeden once kontrol noktasidir. new Truck() sonrasinda honk park oncesinde geldiginde abstract siniflar bu dersin isini yapmistir ve polymorphism hakkinda sonraki konuya hazirsiniz.
Klasorde son bir gecis: bir public Yard, bir abstract Machine, horn dolduran somut cocuklar, new Machine() yok, klavye bekleme yok. Acik tuttugunuz demo uzerinde bir kez daha javac Yard.java ve java Yard calistirin. Ekran hala yazdiginiz doldurmalari basiyorsa abstract sozlesme saglamdir ve kurs sonraki sayfada polymorphism'e gecebilir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
6
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek