Interface
🎯 1. Interface Nedir?
Section titled “🎯 1. Interface Nedir?”Interface, Java’da sınıflar için bir şablon (contract) görevi görür.
Bir sınıfın hangi metotları uygulamak (implement etmek) zorunda olduğunu belirtir.
💡 Interface’ler, çoklu kalıtımı (multiple inheritance) dolaylı olarak sağlar.
🔹 2. Interface Tanımı
Section titled “🔹 2. Interface Tanımı”public interface Hayvan { void sesCikar(); void hareketEt();}Interface içinde tanımlanan metotlar abstract (gövdesiz) ve public olarak kabul edilir.
🔹 3. Interface Uygulama (implements)
Section titled “🔹 3. Interface Uygulama (implements)”class Kedi implements Hayvan { public void sesCikar() { System.out.println("Miyav!"); }
public void hareketEt() { System.out.println("Kedi yürüyor."); }}Bir sınıf, bir interface’i
implementsanahtar kelimesi ile uygular.
🔹 4. Birden Fazla Interface Kullanımı
Section titled “🔹 4. Birden Fazla Interface Kullanımı”Java’da bir sınıf birden fazla interface implement edebilir.
interface Ucan { void uc();}
interface Yuzucu { void yuz();}
class Ordek implements Ucan, Yuzucu { public void uc() { System.out.println("Ördek uçuyor."); } public void yuz() { System.out.println("Ördek yüzüyor."); }}✅ Java sınıflar sadece bir sınıfı
extends, ama birden fazla interface’iimplementsedebilir.
🔹 5. Interface ile Sabitler (Constants)
Section titled “🔹 5. Interface ile Sabitler (Constants)”Interface içinde değişkenler otomatik olarak public static final olarak tanımlanır.
interface Bilgi { int MAX_SAYI = 100; // public static final}System.out.println(Bilgi.MAX_SAYI);💡 Interface değişkenleri değiştirilemez (constant).
🔹 6. Default ve Static Metotlar (Java 8+)
Section titled “🔹 6. Default ve Static Metotlar (Java 8+)”Java 8 ile birlikte interface’ler gövdeli metotlara sahip olabilir.
🔸 Default Metot
Section titled “🔸 Default Metot”interface Arac { default void calistir() { System.out.println("Araç çalıştı."); }}🔸 Static Metot
Section titled “🔸 Static Metot”interface Arac { static void bilgi() { System.out.println("Bu bir araç arayüzüdür."); }}Kullanım:
Section titled “Kullanım:”Arac.bilgi(); // static metotnew Otomobil().calistir(); // default metot🔹 7. Interface ile Kalıtım
Section titled “🔹 7. Interface ile Kalıtım”Bir interface, başka bir interface’den miras alabilir (extends).
interface Hayvan { void sesCikar();}
interface Memeli extends Hayvan { void sutVer();}💡 Bir interface başka bir interface’den
extendsalır, sınıflar iseimplementseder.
🔹 8. Örnek: Çoklu Interface Kullanımı
Section titled “🔹 8. Örnek: Çoklu Interface Kullanımı”interface Telefon { void aramaYap();}
interface Kamera { void fotoCek();}
class AkilliTelefon implements Telefon, Kamera { public void aramaYap() { System.out.println("Arama yapılıyor..."); }
public void fotoCek() { System.out.println("Fotoğraf çekiliyor..."); }}
public class Main { public static void main(String[] args) { AkilliTelefon tel = new AkilliTelefon(); tel.aramaYap(); tel.fotoCek(); }}📱 Akıllı telefon hem
Telefonhem deKameraişlevlerini yerine getirmiştir.
🔹 9. Polymorphism (Çok Biçimlilik) ile Interface Kullanımı
Section titled “🔹 9. Polymorphism (Çok Biçimlilik) ile Interface Kullanımı”Hayvan h = new Kedi();h.sesCikar(); // Kedi’nin metodu çağrılırInterface referansı, implement eden sınıf nesnesini gösterebilir.
🔹 10. Interface ile Abstract Class Farkı
Section titled “🔹 10. Interface ile Abstract Class Farkı”| Özellik | Interface | Abstract Class |
|---|---|---|
| Anahtar kelime | interface | abstract class |
| Gövdeli metot | Java 8 öncesi ❌, sonrası ✅ (default) | ✅ |
| Çoklu kalıtım | ✅ (birden fazla interface) | ❌ |
| Alan (field) | public static final | Değişken tanımlanabilir |
| Amaç | Davranış tanımlama | Ortak yapı tanımlama |
🧩 11. Gerçek Hayat Örneği
Section titled “🧩 11. Gerçek Hayat Örneği”interface Odeme { void odemeYap(double miktar);}
class KrediKarti implements Odeme { public void odemeYap(double miktar) { System.out.println("Kredi kartı ile ödeme: " + miktar + " TL"); }}
class Nakit implements Odeme { public void odemeYap(double miktar) { System.out.println("Nakit ödeme: " + miktar + " TL"); }}
public class Main { public static void main(String[] args) { Odeme odeme1 = new KrediKarti(); Odeme odeme2 = new Nakit();
odeme1.odemeYap(250.0); odeme2.odemeYap(100.0); }}💳
Odemeinterface’i, farklı ödeme yöntemlerinin ortak davranışını tanımlar.
🏁 Özet
Section titled “🏁 Özet”| Kavram | Açıklama | Örnek |
|---|---|---|
| interface | Sınıflar için davranış tanımı | interface Hayvan { void sesCikar(); } |
| implements | Interface uygulama | class Kedi implements Hayvan |
| default | Gövdeli metot (Java 8+) | default void bilgi() |
| static | Interface’e özel metot | Arac.bilgi() |
| Çoklu inheritance | Bir sınıf birden fazla interface implement edebilir | implements A, B |
💡 Not: Interface’ler, soyutlamayı (abstraction) sağlar ve Java’da çoklu kalıtımın güvenli bir yoludur.