PHP 8'de Kalıtım (Inheritance), nesne yönelimli programlamanın temel bir prensibidir ve bir sınıfın (üst sınıf veya ana sınıf) özelliklerini ve metotlarını başka bir sınıfa (alt sınıf veya türetilmiş sınıf) miras verme yeteneğini ifade eder. Kalıtım, kodun yeniden kullanılabilirliğini artırır ve daha organize bir yapı oluşturur.
1. Kalıtımın Temel Kavramları
- Üst Sınıf (Parent Class): Diğer sınıflara özellik ve metotları sağlayan sınıf.
- Alt Sınıf (Child Class): Üst sınıftan miras alan ve kendi özelliklerini ve metotlarını ekleyebilen sınıf.
- Miras Alma: Alt sınıf, üst sınıfın özelliklerini ve metotlarını kullanabilir.
2. Kalıtımın Kullanımı
Kalıtım, extends
anahtar kelimesi ile tanımlanır. Aşağıda basit bir örnek bulunmaktadır:
Örnek:
class Animal {
public
function speak(
) {
return "Animal speaks";
}
}
class Dog extends Animal {
public
function bark(
) {
return "Woof!";
}
}
$dog = new Dog();
echo $dog->speak(); // "Animal speaks" (Üst sınıftan miras alındı)
echo $dog->bark(); // "Woof!" (Alt sınıfa ait metot)
3. Kalıtım ile Özellik ve Metot Kullanımı
Alt sınıf, üst sınıfın özelliklerine ve metotlarına doğrudan erişebilir. Ancak, üst sınıfta tanımlanan protected
ve public
erişim belirleyicilerine sahip olan özellikler ve metotlar alt sınıftan erişilebilirken, private
olanlara erişilemez.
Örnek:
class Person {
public $name;
protected $age; // Sadece alt sınıflardan erişilebilir
private $ssn; // Sadece bu sınıf içinde erişilebilir
public
function __construct(
$name, $age, $ssn
) {
$this->name = $name;
$this->age = $age;
$this->ssn = $ssn;
}
public
function getDetails(
) {
return "Name: " . $this->name . ", Age: " . $this->age;
}
}
class Employee extends Person {
public
function __construct(
$name, $age, $ssn, public $position
) {
parent::__construct($name, $age, $ssn); // Üst sınıfın yapıcısını çağır
}
public
function getEmployeeDetails(
) {
return $this->getDetails() . ", Position: " . $this->position;
}
}
$employee = new Employee("Alice", 30, "123-45-6789", "Manager");
echo $employee->getEmployeeDetails(); // "Name: Alice, Age: 30, Position: Manager"
// echo $employee->ssn; // Hata! Private özelliğe erişilemez.
4. Method Overriding (Metot Geçersiz Kılma)
Alt sınıf, üst sınıfta tanımlı bir metodu geçersiz kılabilir (override) ve kendi davranışını tanımlayabilir. Bu, üst sınıfın metotlarını özelleştirmek için kullanılır.
Örnek:
class Shape {
public
function area(
) {
return 0; // Varsayılan alan
}
}
class Rectangle extends Shape {
public
function __construct(
public $width, public $height
) {}
public
function area(
) {
return $this->width * $this->height; // Alan hesaplama
}
}
$rectangle = new Rectangle(5, 10);
echo $rectangle->area(); // 50
5. Çoklu Kalıtım
PHP, doğrudan çoklu kalıtımı desteklemez. Yani bir sınıf birden fazla üst sınıftan miras alamaz. Ancak, arayüzler (interfaces) kullanarak benzer bir yapı oluşturabilirsiniz. Bir sınıf birden fazla arayüzü uygulayabilir.
Örnek:
interface CanFly {
public
function fly(
);
}
interface CanSwim {
public
function swim(
);
}
class Duck implements CanFly, CanSwim {
public
function fly(
) {
return "Duck is flying";
}
public
function swim(
) {
return "Duck is swimming";
}
}
$duck = new Duck();
echo $duck->fly(); // "Duck is flying"
echo $duck->swim(); // "Duck is swimming"
6. Constructor ve Miras
Alt sınıfın yapıcısı, üst sınıfın yapıcısını çağırmak için parent::__construct()
ifadesini kullanır. Bu, üst sınıfın özelliklerini başlatmaya olanak tanır.
Örnek:
class Vehicle {
public
function __construct(
public $brand
) {}
}
class Car extends Vehicle {
public
function __construct(
public $brand, public $model
) {
parent::__construct($brand); // Üst sınıfın yapıcısını çağır
}
}
$car = new Car("Toyota", "Corolla");
echo $car->brand; // "Toyota"
echo $car->model; // "Corolla"
7. Final Sınıflar ve Metotlar
final
anahtar kelimesi, bir sınıfın veya metotların alt sınıflar tarafından geçersiz kılınmasını engellemek için kullanılır.
Örnek:
class Base {
final public
function show(
) {
return "This is a final method.";
}
}
class Derived extends Base {
// public function show() { } // Hata! final metot geçersiz kılınamaz.
}
Sonuç
PHP 8'de kalıtım, kodun yeniden kullanılabilirliğini artıran ve programın daha düzenli olmasını sağlayan önemli bir özelliktir. Üst sınıflar, alt sınıflara özellik ve metot sağlar, bu da kodu daha etkili bir şekilde yönetmeyi kolaylaştırır. Kalıtımın doğru kullanımı, nesne yönelimli programlamada daha sağlam ve sürdürülebilir yazılımlar geliştirmenize yardımcı olur.