PHP Tutorial.nl

Word een PHP expert!!!

Inheritance in PHP: Hergebruik en uitbreiding van code

Inheritance is een van de fundamentele concepten in objectgeoriënteerd programmeren (OOP). Het stelt een klasse in staat om eigenschappen en methoden over te nemen van een andere klasse. Dit helpt bij het hergebruik van code, het uitbreiden van functionaliteit en het organiseren van je code op een logische manier.

Wat is inheritance in PHP?

Inheritance stelt je in staat om een nieuwe klasse te definiëren die de eigenschappen en methoden van een bestaande klasse overneemt. De bestaande klasse wordt de “superklasse” of “ouderklasse” genoemd, terwijl de nieuwe klasse de “subklasse” of “kindklasse” is. De subklasse kan nieuwe eigenschappen en methoden hebben of bestaande overschrijven.

Laten we een eenvoudig voorbeeld bekijken van hoe inheritance werkt in PHP.

<?php
class Dier {
    protected $naam;

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

    public function maakGeluid() {
        echo "Dit dier maakt een geluid.";
    }
}

class Hond extends Dier {
    public function maakGeluid() {
        echo "Woef!";
    }

    public function haalStok() {
        echo "$this->naam haalt de stok.";
    }
}

$hond = new Hond("Bobby");
$hond->maakGeluid();  // Output: Woef!
$hond->haalStok();    // Output: Bobby haalt de stok.
?>

In dit voorbeeld erft de Hond klasse van de Dier klasse. Dit betekent dat de Hond klasse toegang heeft tot de eigenschappen en methoden van de Dier klasse. De Hond klasse overschrijft de maakGeluid methode en voegt een nieuwe methode haalStok toe.

Toegangsmodificatoren en inheritance

Bij inheritance spelen toegangsmodificatoren een belangrijke rol:

  • Public: Eigenschappen en methoden die toegankelijk zijn vanuit elke context.
  • Protected: Eigenschappen en methoden die toegankelijk zijn binnen de klasse zelf en afgeleide klassen.
  • Private: Eigenschappen en methoden die alleen toegankelijk zijn binnen de klasse zelf.
<?php
class Dier {
    private $leeftijd;
    protected $naam;

    public function __construct($naam, $leeftijd) {
        $this->naam = $naam;
        $this->leeftijd = $leeftijd;
    }

    protected function maakGeluid() {
        echo "Dit dier maakt een geluid.";
    }

    public function getLeeftijd() {
        return $this->leeftijd;
    }
}

class Kat extends Dier {
    public function maakGeluid() {
        echo "Miauw!";
    }

    public function toonNaamEnLeeftijd() {
        echo "$this->naam is " . $this->getLeeftijd() . " jaar oud.";
    }
}

$kat = new Kat("Whiskers", 3);
$kat->maakGeluid();            // Output: Miauw!
$kat->toonNaamEnLeeftijd();    // Output: Whiskers is 3 jaar oud.
?>

In dit voorbeeld laten we zien hoe protected en private eigenschappen en methoden werken in de context van inheritance. De Kat klasse heeft toegang tot de protected eigenschap $naam en de protected methode maakGeluid, maar niet tot de private eigenschap $leeftijd direct. De getLeeftijd methode biedt gecontroleerde toegang tot de private eigenschap $leeftijd.

Overriding en parent keyword

Overriding stelt je in staat om een methode van de superklasse te herdefiniëren in de subklasse. Het parent keyword kan worden gebruikt om de methode van de superklasse aan te roepen.

<?php
class Dier {
    public function maakGeluid() {
        echo "Dit dier maakt een geluid.";
    }
}

class Paard extends Dier {
    public function maakGeluid() {
        parent::maakGeluid();
        echo " Hinnik!";
    }
}

$paard = new Paard();
$paard->maakGeluid();  // Output: Dit dier maakt een geluid. Hinnik!
?>

In dit voorbeeld overschrijft de Paard klasse de maakGeluid methode van de Dier klasse. De parent::maakGeluid() aanroep binnen de overschreven methode zorgt ervoor dat de originele maakGeluid methode van de Dier klasse ook wordt uitgevoerd.

Encapsulatie in inheritance

Encapsulatie speelt een cruciale rol bij inheritance in PHP. Door gebruik te maken van toegangsmodificatoren zoals public, protected, en private, kun je namelijk bepalen welke eigenschappen en methoden toegankelijk zijn voor subklassen. Dit beschermt weer de interne staat van objecten en zorgt daarmee voor gecontroleerde toegang.

Bij inheritance kunnen subklassen toegang krijgen tot protected eigenschappen en methoden van de superklasse, terwijl private eigenschappen en methoden verborgen blijven. Encapsulatie zorgt ervoor dat de interne werking van klassen beschermd blijft, zelfs wanneer ze worden uitgebreid via inheritance.


Inheritance is een krachtig hulpmiddel in objectgeoriënteerd programmeren dat je in staat stelt om eigenschappen en methoden te hergebruiken en uit te breiden. Door gebruik te maken van inheritance, kun je je code beter organiseren en onderhoudbaarder maken.

Toegangsmodificatoren spelen een cruciale rol in hoe inheritance werkt, waardoor je de toegankelijkheid van eigenschappen en methoden kunt controleren. Het overschrijven van methoden en het gebruik van het parent keyword biedt flexibiliteit om de functionaliteit van je klassen aan te passen en uit te breiden.

Inheritance helpt je om efficiënter te programmeren door hergebruik van code mogelijk te maken en zorgt ervoor dat je applicaties schaalbaar en onderhoudbaar blijven.