OOP: APIE (Inheritance)

July 18th, 2012 | 2 min read | Coding rules, Object oriënted, PHP

Als we overerven van een bepaalde class en we bepaalde methodes herbruiken in onze subclasses, dan spreken we van inheritance.

Heads up!

Deze tutorial sluit aan bij mijn vorige tutorial in de reeks van OOP tutorials, APIE (polymorphism).

Een voorbeeld:

<?php

class Mens {

        protected $naam;

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

        public function GetNaam() {
                return $this->naam;
        }

}

class Heer extends Mens {

        public function GetNaam() {
                return "Dhr. ". parent::GetNaam();
        }
}

class Vrouw extends Mens {

        public function __construct($naam) {
                parent::__construct($naam);
                $this->naam = "Mvr. ". $this->naam;
        }
}

$heer = new Heer("Dimitri");
$vrouw = new Vrouw("Mieke");
echo $heer->GetNaam() . "<br />";
echo $vrouw->GetNaam();

?>

We hebben hier een class Mens en de subclasses Heer en Vrouw. In de methode

GetNaam()

van Heer roepen we de methode op van de superclass en herbruiken de uitvoer daarvan in onze eigen implementatie van

GetNaam()

.
Dit is niet de enige vorm van inheritance in het voorbeeld van de class Heer. De constructor van de superclass wordt namelijk ook opgeroepen, alleen zie je dat niet in de class Heer.

In de class Vrouw daarentegen, zie je dat we wel de super-constructor gebruiken, de methode GetNaam() in Vrouw echter, wordt dan weer rechtstreeks overgenomen van de class Mens.

We moeten wel opletten bij inheritance, in de meeste talen (PHP, C#, Java, …) is multiple inheritance namelijk niet toegelaten. Dit wilt zeggen dat we in PHP niet kunnen overerven van twee of meer classes/abstracte classes.
De reden hiervoor is dat multiple inheritance vaak misbruikt werd voor zaken waarvoor het niet dient en onnodig de complexiteit van de software zou verhogen.

Back to tutorialsContact me on TwitterDiscuss on Twitter

Profile picture

Dimitri "g00glen00b" Mestdagh is a consultant at Cronos and tech lead at Aquafin. Usually you can find him trying out new libraries and technologies. Loves both Java and JavaScript.