OOP İleri: Kalıtım (Inheritance) ve Soyutlama (Abstraction)

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
OOP'nin gücü, sınıfların birbirinden özellik alabilmesi ve belirli kurallara uymaya zorlanabilmesinden gelir. Kalıtım (Inheritance) kodun "genişletilmesini" sağlarken, Soyutlama (Abstraction) projenin "anayasasını" yazar.

1. Kalıtım (Inheritance)​


Kalıtım, bir sınıfın (alt sınıf), başka bir sınıfın (üst sınıf) tüm özelliklerini ve metotlarını miras almasıdır. PHP'de bu işlem extends anahtar kelimesi ile yapılır.

Gerçek Hayat Örneği: "Memeli" bir üst sınıftır. "Kedi" ve "Köpek" sınıfları, memelilerin ortak özelliklerini (nefes alma, beslenme) miras alır ama kendilerine has sesler çıkarırlar.

PHP:
<?php
class Hayvan {
public $isim;
public function nefesAl() {
return "$this->isim nefes alıyor...";
}
}

// Kedi sınıfı Hayvan sınıfından miras alıyor
class Kedi extends Hayvan {
public function miyavla() {
return "$this->isim: Miyav!";
}
}

$minnos = new Kedi();
$minnos->isim = "Pamuk";
echo $minnos->nefesAl(); // Üst sınıftan gelen metot
echo $minnos->miyavla(); // Kendi metodu
?>

2. Soyutlama (Abstraction)​


Soyutlama, bir sınıfın doğrudan nesnesinin oluşturulamayacağı, sadece diğer sınıflara "rehberlik" edeceği yapıdır. abstract olarak tanımlanan bir metot, alt sınıflar tarafından mutlaka doldurulmak zorundadır.

PHP:
abstract class OdemeSistemi {
// Alt sınıflar bu metodu kendi içlerinde tanımlamak ZORUNDA
abstract public function odemeYap($tutar);

public function fisKes() {
    return "İşlem fişi oluşturuldu.";
}

}

class KrediKarti extends OdemeSistemi {
public function odemeYap($tutar) {
return "$tutar TL kredi kartı ile çekildi.";
}
}

class Havale extends OdemeSistemi {
public function odemeYap($tutar) {
return "$tutar TL havale ile gönderildi.";
}
}
?>

Kalıtım vs. Soyutlama Karşılaştırması​


ÖzellikKalıtım (Inheritance)Soyutlama (Abstraction)
Anahtar Kelimeextendsabstract
AmaçKod tekrarını önlemek (Reuse)Kural koymak (Template)
Nesne OluşturmaÜst sınıftan nesne oluşturulabilir.Oluşturulamaz.
Metot GövdesiMetotların içi doludur.İçi boş (zorunlu) metotlar içerebilir.

3. Final ve Parent Anahtar Kelimeleri​



  • [] final: Eğer bir sınıfın veya metodun miras alınmasını engellemek istiyorsanız başına final yazarsınız. Bu, "bu sınıfın son hali budur, kimse değiştiremez" demektir.
    [] parent::: Alt sınıfta, üst sınıftaki bir metodu tamamen ezmek yerine üzerine ekleme yapmak istiyorsanız parent::metotAdi() şeklinde çağırabilirsiniz.

PHP:
class Admin extends Kullanici {
public function girisYap() {
parent::girisYap(); // Önce standart giriş işlemlerini yap
echo "Admin paneline yönlendiriliyorsunuz..."; // Sonra ek işlemleri yap
}
}

Sonuç​


Kalıtım ve Soyutlama sayesinde kodunuz sadece bir yığın olmaktan çıkar, yaşayan ve kuralları olan bir sisteme dönüşür. Kalıtım ile sınıflar arası akrabalık kurarken, soyutlama ile ekibinizdeki diğer yazılımcıların (veya gelecekteki kendinizin) hata yapmasını, metotları unutmamasını sağlarsınız.
 
Geri
Üst