Soru, görüş ve önerileriniz için;

contact@fatih-karakus.com

PHP'de Kalıtım ve Polimorfizm

PHP'de Kalıtım ve Polimorfizm

PHP'de kalıtım ve polimorfizm, nesne yönelimli programlama (OOP) prensiplerinden olan temel kavramlardır.

Kalıtım (Inheritance)

Kalıtım, bir sınıfın başka bir sınıftan özelliklerini ve davranışlarını miras almasıdır. Bir sınıf, başka bir sınıftan tüm özelliklerini ve metodlarını devralabilir. Kalıtım, kod tekrarını azaltır, kod yeniden kullanımını sağlar ve sınıflar arasında hiyerarşik ilişkiler oluşturur.

PHP'de kalıtım, extends anahtar kelimesiyle sağlanır. 

Aşağıdaki örnekte, Animal sınıfı, hayvanların genel özelliklerini ve davranışlarını temsil eder. Cat sınıfı, Animalsınıfından kalıtım alır ve özel bir davranış olan meow() metodunu ekler. Cat sınıfı, Animal sınıfının name özelliğini ve eat() metodunu kullanabilir.

class Animal {
    public $name;
    
    public function eat() {
        echo "The animal is eating.";
    }
}

class Cat extends Animal {
    public function meow() {
        echo "Meow!";
    }
}

$cat = new Cat();
$cat->name = "Tom";
$cat->eat(); // Animal sınıfının eat() metodunu kullanır
$cat->meow(); // Cat sınıfının meow() metodunu kullanır

 

Polimorfizm (Polymorphism)

Polimorfizm, bir nesnenin farklı şekillerde davranabilmesidir. Aynı isimli metodlar farklı sınıflar tarafından farklı şekillerde uygulanabilir. Bu, daha genel bir sınıf türü üzerinden daha özelleştirilmiş sınıflara erişimi sağlar.

PHP'de polimorfizm, bir metodu ezme (override) veya bir sınıfın birden fazla arayüzü uygulamasıyla sağlanır. 

Aşağıdaki örnekte, Shape adında bir arayüz tanımlanır. Rectangle ve Circle sınıfları, Shape arayüzünü uygular ve calculateArea() metodunu farklı şekillerde uygular. Bu sayede, her iki sınıf da aynı isimli metodu çağırabilir ve farklı sonuçlar elde edebilir.

interface Shape {
    public function calculateArea();
}

class Rectangle implements Shape {
    private $width;
    private $height;

    public function __construct($width, $height) {
        $this->width = $width;
        $this->height = $height;
    }

    public function calculateArea() {
        return $this->width * $this->height;
    }
}

class Circle implements Shape {
    private $radius;

    public function __construct($radius) {
        $this->radius = $radius;
    }

    public function calculateArea() {
        return 3.14 * $this->radius * $this->radius;
    }
}

$rectangle = new Rectangle(4, 5);
$circle = new Circle(3);

echo $rectangle->calculateArea(); // 20
echo $circle->calculateArea(); // 28.26

 

Sonuç olarak Kalıtım, sınıflar arasında miras alma ilişkisi oluştururken, polimorfizm ise farklı sınıfların aynı metodu farklı şekillerde uygulayabilmesini sağlar.