Skip to content

Latest commit

 

History

History
98 lines (88 loc) · 4.11 KB

Inheritance.md

File metadata and controls

98 lines (88 loc) · 4.11 KB

1.2 Kalıtım (Inheritance)

Kalıtım (Inheritance), bir sınıfın başka bir sınıfın özelliklerini ve metotlarını devralmasını sağlayan nesne yönelimli programlama prensibidir. Java'da kalıtım sayesinde ortak özellikleri tek bir sınıfta tanımlayabilir ve bu özellikleri diğer sınıflarda yeniden kullanabiliriz. Böylece kod tekrarını azaltabilir ve daha düzenli bir yapı oluşturabiliriz.

Kalıtım nasıl yapılır?

Java'da kalıtım oluşturmak için extends anahtar kelimesi kullanılır. Örneğin, bir Hayvan sınıfımız ve bu sınıftan türeyen Kopek sınıfımız olsun.

image
class Hayvan {
    String isim;
    public void sesCikar() {
        System.out.println("Hayvan ses çıkarıyor.");
    }
}
class Kopek extends Hayvan {
    public void havla() {
        System.out.println("Köpek havlıyor!");
    }
}

Kodun açıklaması

  • Hayvan: Üst sınıftır (superclass).
  • Kopek: Alt sınıftır (subclass).
  • extends Hayvan: Kopek sınıfının Hayvan sınıfından türediğini belirtir.
  • isim ve sesCikar(): Kopek nesneleri tarafından da kullanılabilir.
  • havla(): Yalnızca Kopek sınıfında tanımlanmış bir metottur.

Nasıl kullanılır?

public class Main {
    public static void main(String[] args) {
        Kopek kopek = new Kopek();
        kopek.isim = "Kopek";
        System.out.println(kopek.isim);
        kopek.sesCikar();
        kopek.havla();
    }
}

Çıktı

Kopek
Hayvan ses çıkarıyor.
Köpek havlıyor!

Gördüğün gibi Kopek sınıfında isim veya sesCikar() metotlarını yeniden yazmadık. Bunları Hayvan sınıfından devraldık

Kalıtımda super anahtar kelimesi

super, alt sınıftan üst sınıfın erişilebilir üyelerine ulaşmak için kullanılır. Üst sınıfın kurucusunu çağırmak için de kullanılabilir.

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

class Kedi extends Hayvan {
    @Override
    public void sesCikar() {
        super.sesCikar();
        System.out.println("Miyav!");
    }
}

Burada super.sesCikar() üst sınıftaki metodu çağırır. @Overrideise alt sınıfta üst sınıftan gelen metodun yeniden tanımlandığını belirtir.

Kalıtımın avantajları

  • Kod tekrarını azaltır: Ortak özellikler üst sınıfta tutulabilir.
  • Kodun yeniden kullanılmasını sağlar: Alt sınıflar üst sınıfın erişilebilir üyelerini kullanabilir.
  • Genişletilebilirlik sağlar: Alt sınıflara yeni özellikler eklenebilir.
  • Polimorfizmi destekler: Üst sınıf referansları üzerinden alt sınıf nesneleri kullanılabilir.

Java'da kalıtım kuralları

  • Bir sınıf, extends ile yalnızca bir sınıftan doğrudan kalıtım alabilir.
  • Bir sınıf birden fazla arayüzü (interface) implements ile uygulayabilir.
  • private üyeler alt sınıfta doğrudan erişilebilir değildir.
  • final olarak tanımlanan bir sınıftan kalıtım alınamaz.
  • Kurucular (constructors) kalıtılmaz; alt sınıf kurucuları üst sınıf kurucularını çağırabilir.

Kısa özet

Kalıtımı şu şekilde düşünebilirsin:

Hayvan → Üst sınıf
Kopek → Alt sınıf
extends → Kalıtım kurmak için kullanılan anahtar kelime
super → Üst sınıfın erişilebilir üyelerine ulaşmak için kullanılan anahtar kelime
@Override → Devralınan bir metodun yeniden tanımlandığını belirtir

GitHub dokümantasyonunda sıradaki konu: Soyutlama (Abstraction). Kalıtım ile soyutlamayı öğrendikten sonra çok biçimlilik (Polymorphism) konusunu ele alabilirsin.

Teşekkür ederim...