Java'da Override
Cagri cocuk govdesini kullansin diye ebeveyn metodunu cocukta yeniden yazin. Truck extends Car tutun. Car uzerinde horn un beep basmasini koruyun. Truck uzerinde horn u yeniden yazin ki honk bassin. Yard.java icinde bir Truck kurun ve t.horn() cagirin. javac Yard.java ile derleyin ve java Yard calistirin. Ekran honk gostermeli. Ikinci demo ayrica sade bir Car kurar ki ebeveynden beep, cocuktan honk duyasiniz. Interface sonraki sayfaya kalsin — bu ders iki govdeli tek metot adidir.
horn u cocukta yeniden yazin
Kalitim sayfasi Truck u bos birakti ki t.horn() ebeveyn beep ini korusun. Super sayfasi yapicilari super ile calistirdi. Bu sayfa metot govdesini cocukta degistirir. Yard.java acin. Public sinif adini Yard tutun. Metot hikayesini gomuyorsa kalan sadece-yapici car ve truck yazilarini, kalan yol demolarini, Store yazicilarini ve klavye Scanner i silin. Program yazma beklememeli. Import satiri gerekmez.
beep basan bir ornek metodu olan ebeveyni bildirin:
class Car {
void horn() {
System.out.println("beep");
}
}
Cocugu extends Car ile bildirin. Truck icinde ayni metot adini yeniden yazin, ama honk basdirin:
void horn() {
System.out.println("honk");
}
Eslesen ad ve eslesen bos parametre listesi, cocuk surumunun Truck nesneleri icin ebeveyn surumunun yerine gectigi anlamina gelir. Ilgisiz ikinci bir metot eklemiyorsunuz. horn u override ediyorsunuz.
Yard.main icinde bir truck kurun ve metodu cagirin:
Truck t = new Truck();
t.horn();
Cagri Truck uzerinde yazilan govdeyi calistirir, bu yuzden ekran honk basar.
class Car {
void horn() {
System.out.println("beep");
}
}
class Truck extends Car {
void horn() {
System.out.println("honk");
}
}
public class Yard {
public static void main(String[] args) {
Truck t = new Truck();
t.horn();
}
}
Yard.java yi tutan klasorden javac Yard.java calistirin. Parantez, suslu parantez ve noktali virgul uyuyorsa javac kendi satirini yazmaz. Sonra java Yard calistirin — java Yard.java degil. Calistirma komutundan .java sonunu cikarin. Dosyada tek public sinif tutun ki ad Yard ile eslesin. Yardimci tipler Car ve Truck bu baslangic seklinde public olmadan kalir.
Ekran honk gosterir. Calismayi bir kez adimlayin. Java Yard.main den baslar. new Truck() bir truck kurar. t.horn() , t nin gercek tipine bakar. Truck kendi horn unu yazdigi icin o cocuk govdesi calisir ve honk basar. Ebeveyn beep govdesi Car da kalir ve bu truck cagrisi icin kullanilmaz.
Hala beep goruyorsaniz, Truck un gercekten bir horn metodu icerip icermedigini kontrol edin. Kalitim sayfasindan bos bir Truck hala beep i miras alir. Override icin cocuk metodunun ayni adla mevcut olmasi gerekir. Hala bir yapici demosundan car sonra truck goruyorsaniz, override ogretim dosyasina gecin ve java Yard i yeniden calistirin.
Ekrana bakarken kurali sesli soyleyin: cocukta ayni metot adi, o nesne icin cocuk govdesi kazanir. Truck un bir tur Car kalmasi icin extends Car tutun. extends olmadan Truck uzerindeki bir horn ayri bir tip hikayesi olurdu, ebeveyn metodunun override i degil.
Bu sayfada bir interface dosyasi uydurmayin. Interface sonraki dersi bekler. Bugun bir sinif hiyerarsisi iki horn govdesi tasir ve cocuk govdesi bir truck cagrisina cevap verir.
Ebeveyn beep ve cocuk honk yan yana
Ikinci program override i korur. main hem bir Car hem bir Truck kurar, sonra her birinde horn cagirir. Ebeveyn hala beep basar. Cocuk hala honk basar.
class Car {
void horn() {
System.out.println("beep");
}
}
class Truck extends Car {
void horn() {
System.out.println("honk");
}
}
public class Yard {
public static void main(String[] args) {
Car c = new Car();
Truck t = new Truck();
c.horn();
t.horn();
}
}
javac Yard.java ile derleyin, sonra java Yard calistirin. Ekran once beep, sonra honk gosterir. Ilk satir Car nesnesinden gelir. Ikinci satir Truck nesnesinden gelir. Cocukta override, ebeveyn nesneleri icin ebeveyn metodunu silmez. Her nesne kendi tipine ait govdeyi kullanir.
Iki horn metodunu bir kez daha okuyun. Ayni ad. Ayni bos parametre listesi. Farkli basim metni. Imzanin bu ayniligi, cocuk surumunu yeni ilgisiz bir metot yerine bir override yapar. Cocuk metodunu baska bir seye yeniden adlandirirsaniz, kalitim truck larda yine beep tutar ve artik override ogretmezsiniz.
Klasorde hala super() li yapici demolari varsa, onlar tarih olarak kalsin. Bu ders icin override ogretim dosyasini calistirin ki ekran metot basilarini gostersin, yapici sirasi kelimelerini degil. javac yinelenen public siniflardan sikayet ederse, dosyada hala birden fazla public sinif var demektir — yalnizca Yard i public tutun.
Ebeveyn govdesi cocuk govdesine karsi
📊 Who prints what for horn
| Role | horn body |
|---|---|
Parent Car |
prints beep |
Child Truck |
prints honk (overrides) |
Tablo bu sayfanin kisa haritasidir. Cocuk bos kaldiginda yalniz kalitim her iki role beep koyardi. Override dan sonra cocuk satiri honk olurken ebeveyn satiri beep kalir. Ikinci demo her iki satiri basinca bu haritayi akilda tutun. |
Bos extends ve super ile karsilastirma
Kalitim sayfasinda bos Truck ebeveyn horn unu tuttu ve beep basti. Super sayfasinda yapicilar super ile akti ve once car sonra truck basti. Bu sayfada metotun kendisi cocukta degisir. Hala extends gerekir. Yapicilari sonra da kullanabilirsiniz. Henuz interface gerekmez.
Hala bos bir Truck aciksa, ekrani yargilamadan once honk basan cocuk horn u ekleyin. Hala bir yapici dosyasi aciksa, test altindaki cagri t.horn() olsun diye override dosyasina gecin. Yeni tokenlar cocukta yeniden yazilan metot ve ekranin iki farkli sozcugu beep ile honk tur.
Interface oncesi
Truck uzerinde horn u yeniden yazip t.horn() dan honk gorebilirsiniz. Hem c.horn() hem t.horn() cagirip once beep sonra honk gorebilirsiniz. Tutulan her demo icin sirayla Yard.java derleyin ve java Yard calistirin. Cocuk govdesi truck cagrisina cevap verdi. Sonraki sayfa interface; bir tip orada yalniz extends e dayanmadan metot soz verebilir.
Net bir override icin tek-truck honk demosunu tutun. Net bir ebeveyn-cocuk karsiti icin iki-nesne demosunu tutun. Interface dosyalarini bu sayfadan uzak tutun. Bu uc aliskanlik ilerlemeden onceki kontrol noktasidir. t.horn() dan sonra honk geldiginde ve c.horn() dan sonra hala beep geldiginde, override bu dersin isini yapmistir ve interface konusuna hazirsiniz.
Klasorde son bir tur: bir public Yard, iki yardimci tip, honk basan bir cocuk horn, klavye beklemesi yok, zorunlu interface yok. Acik tuttugunuz demoda bir kez daha javac Yard.java ve java Yard calistirin. Ekran hala tabloyla uyuyorsa — ebeveyn beep, cocuk honk — override saglamdir ve kurs sonraki sayfada interface e gecebilir.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 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