Java’da Inheritance (Kalıtım)

Java, nesne yönelimli programlamanın (OOP) temel yapı taşlarından biri olan inheritance yani kalıtım özelliğini destekler. Kalıtım sayesinde bir sınıf, başka bir sınıfın özelliklerini (fields) ve davranışlarını (methods) devralabilir. Bu hem kod tekrarını azaltır hem de daha düzenli, sürdürülebilir yazılımlar geliştirmemizi sağlar.

Bu içerikte inheritance nedir, nasıl uygulanır, avantajları nelerdir ve Java’da nasıl kullanılır gibi sorulara detaylı cevaplar vereceğiz.


Inheritance (Kalıtım) Nedir?

Kalıtım, bir sınıfın başka bir sınıftan özellik ve davranış miras almasıdır. Yeni oluşturulan sınıfa alt sınıf (subclass) veya türemiş sınıf (derived class), kalıtım alınan sınıfa ise üst sınıf (superclass) veya base class denir.


Java’da Kalıtım Nasıl Yazılır?

Kalıtım oluşturmak için extends anahtar kelimesi kullanılır.

public class Hayvan {
    public void sesCikar() {
        System.out.println("Hayvan ses çıkardı.");
    }
}

public class Kedi extends Hayvan {
    public void miyavla() {
        System.out.println("Kedi miyavladı.");
    }
}

Kullanımı:

public class Main {
    public static void main(String[] args) {
        Kedi k = new Kedi();
        k.sesCikar();  // Üst sınıftan geldi
        k.miyavla();   // Alt sınıfa ait
    }
}


📌 super Anahtar Kelimesi

super anahtar kelimesi, alt sınıftan üst sınıfa erişmek için kullanılır.

1. Üst sınıfın metoduna erişim:

public class Kedi extends Hayvan {
    public void sesCikar() {
        super.sesCikar(); // Üst sınıftaki sesCikar()
        System.out.println("Kedi ses çıkardı.");
    }
}

2. Constructor içinde super() ile üst sınıfın yapıcısını çağırma:

public class Hayvan {
    public Hayvan() {
        System.out.println("Hayvan oluşturuldu.");
    }
}

public class Kedi extends Hayvan {
    public Kedi() {
        super(); // Üst sınıf constructor'ı çağrılır
        System.out.println("Kedi oluşturuldu.");
    }
}


🧠 Override – Metot Ezme

Alt sınıf, üst sınıftan aldığı metodu kendi ihtiyacına göre değiştirebilir. Buna override (üzerine yazma) denir.

public class Hayvan {
    public void sesCikar() {
        System.out.println("Bir hayvan sesi.");
    }
}

public class Kopek extends Hayvan {
    @Override
    public void sesCikar() {
        System.out.println("Hav hav!");
    }
}


🛑 Final ve Kalıtım

  • Eğer bir sınıf final olarak tanımlanırsa, miras alınamaz.
  • Eğer bir metot final olarak tanımlanırsa, override edilemez.
public final class SabitSinif {
    // Bu sınıftan başka sınıf türetilemez
}

public class Ornek {
    public final void yaz() {
        System.out.println("Bu metot değiştirilemez.");
    }
}


Inheritance ile Polymorphism Birlikteliği

Kalıtım sayesinde çok biçimlilik (polymorphism) kullanılabilir. Bu, aynı referans türüyle farklı nesneleri temsil etmenizi sağlar:

Hayvan h = new Kopek(); // Hayvan referansı, Kopek nesnesi
h.sesCikar();           // Kopek'in sesCikar metodu çalışır


🧾 Kalıtımın Avantajları

AvantajAçıklama
Kod tekrarını azaltırOrtak özellikler bir üst sınıfa alınarak tekrar engellenir
Okunabilirliği artırırSınıflar arası ilişki anlaşılır olur
Bakımı kolaylaştırırDeğişiklikler tek noktadan yönetilebilir
Genişletilebilirlik sağlarYeni sınıflar, var olan sınıflar üzerine kurulabilir

⚠️ Kalıtımda Dikkat Edilmesi Gerekenler

  • Java’da çoklu kalıtım (multiple inheritance) desteklenmez. Bir sınıf yalnızca bir sınıftan miras alabilir.
  • Gereksiz yere kalıtım kullanmak, kod karmaşıklığını artırır. Ortaklık yoksa kalıtım tercih edilmemelidir.
guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
0
YORUM YAPx