Resim

Miras Almak (Inheritance)

Miras Alma (Inheritance)

Miras alma, bir sınıfın (alt sınıf/child class), başka bir sınıftan (üst sınıf/parent class) tüm nitelikleri ve metotları devralmasını sağlayan mekanizmadır. Bu, kod tekrarını önler ve sınıflar arasında "bir ... dır" (is-a) ilişkisi kurar.

A. Temel Yapı ve İlişki

  • Üst Sınıf (Parent/Base Class): Özellikleri miras bırakan sınıftır.

  • Alt Sınıf (Child/Derived Class): Üst sınıftan özellik ve davranışları devralan, ve bu özellikleri genişleten (yeni özellikler ekleyen) sınıftır.

Kural: Alt sınıf, üst sınıfın tüm fonksiyonlarına ve niteliklerine otomatik olarak sahip olur.

  • Örnek: Hayvan ve Köpek Sınıfları

    Tüm hayvanlar yiyebilir ve nefes alabilir. Köpek bir hayvandır, bu yüzden bu özellikleri miras alır ve ek olarak havlayabilir.

# ÜST SINIF (Ebeveyn)
class Hayvan:
    def __init__(self, isim):
        self.isim = isim
        
    def yemek_ye(self):
        print(f"{self.isim} yemek yiyor.")
        
    def nefes_al(self):
        print(f"{self.isim} nefes alıyor.")

# ALT SINIF (Çocuk)
# Parantez içinde üst sınıfın adı yazılarak miras alınır
class Kopek(Hayvan): 
    def __init__(self, isim, tur):
        # Miras alınan nitelikleri başlatmak için önce super() 
        #kullanılır
        super().__init__(isim) 
        self.tur = tur # Alt sınıfa özgü yeni nitelik
        
    def havla(self):
        print(f"{self.isim} (tür: {self.tur}) havlıyor: Hav hav!")
        
# Kullanım
kopek1 = Kopek("Karabaş", "Labrador")

# Miras alınan metotlar kullanılabilir
kopek1.yemek_ye() # Çıktı: Karabaş yemek yiyor.
kopek1.nefes_al() # Çıktı: Karabaş nefes alıyor.

# Alt sınıfa özgü metot
kopek1.havla()    # Çıktı: Karabaş (tür: Labrador) havlıyor: Hav hav!

B. super() Fonksiyonu

super() fonksiyonu, alt sınıfların üst sınıflarının metotlarına erişmesini sağlayan temel araçtır. Miras alma kullanıldığında, alt sınıfın kendi __init__ metodunu tanımladığında, üst sınıfın __init__ metodunu açıkça çağırması gerekir.

# Kopek sınıfı örneğinde:
# super().__init__(isim) 
# Bu, Kopek sınıfının Hayvan sınıfının __init__ metodunu çağırmasını #sağlar,
# böylece 'isim' niteliği doğru şekilde başlatılır.

Kendiniz Deneyebilirsiniz:

C. Metodu Geçersiz Kılma (Method Overriding)

Alt sınıf, miras aldığı bir metodu kendi ihtiyacına göre yeniden tanımlayabilir. Buna metodu geçersiz kılma denir.

  • Senaryo: Hayvan sınıfının genel bir ses_cikar() metodu olsun, Kopek sınıfı bu metodu kendine özgü bir şekilde (havlama) geçersiz kılsın.

class Hayvan:
    # ... (diğer metotlar)
    def ses_cikar(self):
        print("Bilinmeyen bir ses çıkardı.")

class Kopek(Hayvan):
    # ... (diğer metotlar)
    
    # Üst sınıftaki 'ses_cikar' metodunu geçersiz kılıyoruz
    def ses_cikar(self): 
        print(f"{self.isim} hırlıyor!") # Yeni davranış

# Kullanım
genel_hayvan = Hayvan("Kedi")
kopek2 = Kopek("Max", "Golden")

genel_hayvan.ses_cikar() # Çıktı: Bilinmeyen bir ses çıkardı.
kopek2.ses_cikar()# Çıktı: Max hırlıyor!(Alt sınıfın davranışı 
                    #uygulandı)

Miras alma, büyük kod tabanlarında hiyerarşik yapı oluşturarak kodun organize olmasını ve yeniden kullanılmasını sağlar. Aynı mantığı (örneğin yemek_ye()) her alt sınıfta tekrar yazmak yerine, sadece bir kez üst sınıfta tanımlayarak zamandan tasarruf edersiniz.

Kendiniz Deneyebilirsiniz:

🔥 Python Kariyerinizi Hemen Başlatın!

Hemen kursumuza kaydolun ve bu güçlü araçları kullanarak profesyonel Python geliştiricisi olma yolunda ilk adımı atın. Kursumuzdaki uygulamalı modüller, sizi sadece bir yazılımcı adayı değil, hazır bir profesyonel haline getirecek. Python Eğitimini Udemy platformunda bulabilirsiniz.

[ Python Eğitimi Sıfırdan İleri Seviye ]

Tıklayın ve Python Eğitimine Hemen Kaydolun!

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?