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ı
Avantaj | Açıklama |
---|---|
Kod tekrarını azaltır | Ortak özellikler bir üst sınıfa alınarak tekrar engellenir |
Okunabilirliği artırır | Sınıflar arası ilişki anlaşılır olur |
Bakımı kolaylaştırır | Değişiklikler tek noktadan yönetilebilir |
Genişletilebilirlik sağlar | Yeni 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.