Inheritance (Kalıtım)
🎯 1. Inheritance Nedir?
Section titled “🎯 1. Inheritance Nedir?”Inheritance (Kalıtım), bir sınıfın başka bir sınıfın özelliklerini (alanlarını ve metotlarını) miras almasıdır.
Kod tekrarını azaltır ve yeniden kullanılabilirliği artırır.
💡 “Bir sınıf, başka bir sınıftan türetilir.”
🔹 2. Sözdizimi (Syntax)
Section titled “🔹 2. Sözdizimi (Syntax)”class AltSinif extends UstSinif { // Yeni özellikler veya metotlar eklenebilir}🔸
extendsanahtar kelimesi kullanılır.
🔹 3. Örnek: Basit Kalıtım
Section titled “🔹 3. Örnek: Basit Kalıtım”class Hayvan { void sesCikar() { System.out.println("Bir hayvan ses çıkarıyor..."); }}
class Kedi extends Hayvan { void miyavla() { System.out.println("Miyav!"); }}
public class Main { public static void main(String[] args) { Kedi k = new Kedi(); k.sesCikar(); // Üst sınıf metodu k.miyavla(); // Alt sınıf metodu }}✅
Kedisınıfı,HayvansınıfındakisesCikar()metodunu miras almıştır.
🔹 4. super Anahtar Kelimesi
Section titled “🔹 4. super Anahtar Kelimesi”super anahtar kelimesi, üst sınıfa erişmek için kullanılır.
class Hayvan { String tur = "Genel Hayvan";
void sesCikar() { System.out.println("Hayvan sesi..."); }}
class Kopek extends Hayvan { String tur = "Köpek";
void yazdir() { System.out.println(super.tur); // Üst sınıf değişkeni super.sesCikar(); // Üst sınıf metodu }}🔹 5. Constructor (Yapıcı) Kalıtımı
Section titled “🔹 5. Constructor (Yapıcı) Kalıtımı”Alt sınıfın yapıcısı (constructor), çalışırken otomatik olarak üst sınıfın yapıcısını çağırır.
class Hayvan { Hayvan() { System.out.println("Hayvan oluşturuldu."); }}
class Kedi extends Hayvan { Kedi() { System.out.println("Kedi oluşturuldu."); }}
public class Main { public static void main(String[] args) { new Kedi(); }}Çıktı:
Hayvan oluşturuldu.
Kedi oluşturuldu.
🔹 6. Method Overriding (Metot Ezme)
Section titled “🔹 6. Method Overriding (Metot Ezme)”Alt sınıf, üst sınıfta bulunan bir metodu kendi ihtiyacına göre değiştirebilir.
class Hayvan { void sesCikar() { System.out.println("Genel bir hayvan sesi..."); }}
class Kedi extends Hayvan { @Override void sesCikar() { System.out.println("Miyav!"); }}💡
@Overrideetiketi, bir metodu üst sınıftan ezdiğimizi belirtir.
🔹 7. protected Erişim Belirleyici
Section titled “🔹 7. protected Erişim Belirleyici”Alt sınıflar, üst sınıftaki protected üyeleri doğrudan kullanabilir.
class Arac { protected int hiz = 120;}
class Araba extends Arac { void yazdir() { System.out.println("Hız: " + hiz); }}🔹 8. Çok Seviyeli Kalıtım (Multilevel Inheritance)
Section titled “🔹 8. Çok Seviyeli Kalıtım (Multilevel Inheritance)”class Canli { void yasiyor() { System.out.println("Canlı yaşıyor."); }}
class Hayvan extends Canli { void hareketEt() { System.out.println("Hayvan hareket ediyor."); }}
class Kedi extends Hayvan { void miyavla() { System.out.println("Miyav!"); }}
public class Main { public static void main(String[] args) { Kedi k = new Kedi(); k.yasiyor(); k.hareketEt(); k.miyavla(); }}🔹 9. “final” Anahtar Kelimesi
Section titled “🔹 9. “final” Anahtar Kelimesi”Bir sınıf veya metot final olarak işaretlenirse kalıtım veya ezme yapılamaz.
final class Arac {} // başka sınıf extend edemez
class Araba { final void calistir() { System.out.println("Araba çalışıyor."); }}💡
final→ kalıtımı engeller.
🔹 10. Nesne Türü ve Upcasting
Section titled “🔹 10. Nesne Türü ve Upcasting”Üst sınıf referansı, alt sınıf nesnesini gösterebilir (upcasting).
Hayvan h = new Kedi();h.sesCikar(); // Kedi’nin ezilmiş metodu çağrılır💡 Polymorphism (çok biçimlilik) bu davranışın temelini oluşturur.
🧩 11. Örnek: Miras Zinciri
Section titled “🧩 11. Örnek: Miras Zinciri”class Calisan { void bilgi() { System.out.println("Ben bir çalışanım."); }}
class Muhendis extends Calisan { void projeYap() { System.out.println("Proje geliştiriyorum."); }}
class Yazilimci extends Muhendis { void kodYaz() { System.out.println("Java kodu yazıyorum."); }}
public class Main { public static void main(String[] args) { Yazilimci y = new Yazilimci(); y.bilgi(); y.projeYap(); y.kodYaz(); }}🧠 12. Kalıtımın Avantajları
Section titled “🧠 12. Kalıtımın Avantajları”✅ Kod tekrarını azaltır
✅ Ortak özellikleri üst sınıfta toplar
✅ Polimorfizm’i (çok biçimliliği) destekler
✅ Kodun bakımını kolaylaştırır
🏁 Özet
Section titled “🏁 Özet”| Kavram | Açıklama | Anahtar Kelime |
|---|---|---|
| Inheritance | Bir sınıfın başka sınıftan miras alması | extends |
| super | Üst sınıfa erişim | super.metot() |
| @Override | Metot ezme işlemi | @Override |
| final | Kalıtımı engeller | final class |
| Multilevel | Birden fazla seviye kalıtım | A -> B -> C |
💡 Not: Java çoklu kalıtımı (birden fazla sınıfı extend etmeyi) desteklemez. Bunun yerine interface yapısı kullanılır.