Java'da Interface
Bos metot basliklari olan bir interface bildirin, sonra bu metotlari bir sinifta implements ile doldurun. void horn(); ve govdesiz interface Signal yazin. class Truck implements Signal yazin ve horn a honk basan bir govde verin. Yard.java icinde bir Truck kurun ve t.horn() cagirin. javac Yard.java ile derleyin ve java Yard calistirin. Ekran honk gostermeli. Ikinci demo bir sinifin ayni anda iki interface i implements etmesine izin verir. Enumlari sonraki sayfaya birakin — bu ders bir metot sozu ve onu tutan siniftir.
Bir interface metodunu uygulayin
Override sayfasi, zaten extends Car olan cocukta horn u yeniden yazdi. Bu sayfa govdesiz bir sozden baslar. Yard.java acin. Public sinif adini Yard tutun. Interface hikayesini gomuyorsa kalan Car/Truck extends demolarini, super ile yapici yazilarini, yol demolarini ve klavye Scanner i silin. Program yazma beklememeli. Import satiri gerekmez.
Interface i siniflarin ustunde bildirin:
interface Signal {
void horn();
}
Baslik noktali virgul ile biter. Bu baslangic seklinde interface icinde horn icin { } govdesi yoktur.
Sozu tutan sinifi bildirin:
class Truck implements Signal {
Truck icinde ayni adla public bir metot yazin ve govdeyi doldurun:
public void horn() {
System.out.println("honk");
}
Anahtar kelime implements tir, extends degil. Sinif, interface te listelenen her metot icin bir govde vermelidir. Bu sayfada bu yalnizca horn dur.
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.
interface Signal {
void horn();
}
class Truck implements Signal {
public 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. Interface Signal ve yardimci sinif Truck bu baslangic seklinde public olmadan kalir.
Ekran honk gosterir. Calismayi bir kez adimlayin. Java Yard.main den baslar. new Truck() , Signal sozunu vermis bir truck kurar. t.horn() Truck uzerindeki govdeyi calistirir ve honk basar. Siz hic new Signal() yazmazsiniz — interface metotlari adlandirir; sinif govdeleri ve nesneyi verir.
javac reddederse uc seyi kontrol edin. Birincisi, sinif satiri implements Signal demeli, extends Signal degil. Ikincisi, her interface metodunun sinifta eslesen bir metodu olmali. Ucuncusu, uygulama metodu bu ogretim seklinde public tir ki interface in genel sozlesmesiyle eslesin. Hala eski bir override dosyasindan beep goruyorsaniz, interface ogretim dosyasina gecin ve java Yard i yeniden calistirin.
Ekrana bakarken kurali sesli soyleyin: interface cagriyi adlandirir, sinif govdeyi doldurur, nesne o govdeyi calistirir. Yazdirmanin sahibi olan sinifta implements tutun. Bu sayfada bir enum uydurmayin. Enumlar sonraki dersi bekler.
Bir sinifta iki interface uygulayin
Ikinci program Yard ve Truck u korur. Simdi Truck iki interface uygular. Signal hala horn ister. Mark show ister. Sinif her iki govdeyi doldurur. main her iki metodu cagirir.
interface Signal {
void horn();
}
interface Mark {
void show();
}
class Truck implements Signal, Mark {
public void horn() {
System.out.println("honk");
}
public void show() {
System.out.println("truck");
}
}
public class Yard {
public static void main(String[] args) {
Truck t = new Truck();
t.horn();
t.show();
}
}
javac Yard.java ile derleyin, sonra java Yard calistirin. Ekran once honk, sonra truck gosterir. Ilk satir Truck uzerinde doldurulan Signal sozunden gelir. Ikinci satir ayni sinifta doldurulan Mark sozunden gelir. implements listesinde interface adlarini virgulle ayirin: implements Signal, Mark.
Sinif basligini bir kez daha okuyun. Bir sinif. Iki interface. Iki metot govdesi. Bu, iki extends ebeveyn kullanmadan birden fazla sozu tutmanin baslangic resmidir. Java bir sinifin yalnizca bir sinifi genisletmesine izin verir; birden fazla interface uygulayabilir. Bu sayfa o virgullu listeyi kucuk bir Yard dosyasinda gosterir.
Mark listede iken show u atarsaniz javac reddeder cunku listelenen her interface metodunun bir govdesi olmali. Mark i implements listesinden cikarip yine de show yazarsaniz, Mark icin interface yerine getirilmesi degil, siradan bir metotunuz olur. Her iki sozun kontrol edilmesini istediginizde sinif satirinda her iki adi tutun.
extends override ile karsilastirma
Override sayfasinda Truck extends Car idi ve zaten ebeveyn govdesi olan horn u yeniden yazdi. Bu sayfada Signal govdesiz baslar ve Truck implements Signal ilk govdeyi verir. Hala Yard.java derler ve java Yard calistirirsiniz. Hala t.horn() cagirirsiniz. Yeni tokenlar interface, implements ve — ikinci demoda — virgulle ayrilmis bir implements listesidir.
Hala kalan bir override dosyasi aciksa extends Car ve belki honk yaninda beep gorursunuz. Dosyanin ustu interface Signal gostersin ve sinif satiri implements gostersin diye interface ogretim dosyasina gecin. Enum demolarini bu sayfanin disinda tutun. Klavye girisini bu sayfanin disinda tutun.
Bu sayfa enumlar icin ne birakir
Bu sayfa interface metotlarini implements ile doldurur. Sonraki sayfa enumlari gosterir; bir tip sabit adli degerler listeler. Burada interface sozleriyle kalin. Bugunku demolari henuz bir enum listesiyle degistirmeyin.
Sonra enum kullandiginizda ayni programdaki diger tiplerde hala interface uygulayabilirsiniz. Bu sayfayi o komsu hikayenin interface yarisi sayin. Enum dersini acmadan once her iki Yard demosunu honk — sonra honk arti truck — otomatik hissedilene kadar bitirin.
Enumlardan once
Bos horn() ile interface Signal yazabilir, onu Truck uzerinde uygulayabilir ve t.horn() dan honk gorebilirsiniz. Bir sinifta Signal ve Mark uygulayabilir ve once honk sonra truck gorebilirsiniz. Tutulan her demo icin Yard.java derleyin ve java Yard calistirin. Sinif interface sozlerini tuttu. Sonraki sayfa enumlardir; bir tip sabit adlar listeler.
Net bir implements hikayesi icin tek-interface honk demosunu tutun. Net bir virgul listesi icin iki-interface demosunu tutun. Enum dosyalarini bu sayfanin disinda tutun. Bu uc aliskanlik ilerlemeden onceki kontrol noktasidir. t.horn() dan sonra honk geldiginde — ve ikinci demo show() dan sonra da truck basdiginda — interface ler bu dersin isini yapmistir ve siz enumlar hakkinda sonraki konuya hazirsiniz.
Klasorden son bir gecis: bir public Yard, bos metotlu interface basliklari, onlari implements eden bir sinif, klavye beklemesi yok, zorunlu enum yok. Acik tuttugunuz demoda bir kez daha javac Yard.java ve java Yard calistirin. Ekran yazdiginiz interface doldurmalarini basmaya devam ediyorsa sozler saglamdir ve kurs sonraki sayfada enumlara 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