Overerving (Inheritance)


Overerving stelt een nieuwe klasse in staat om eigenschappen en gedrag van een bestaande klasse over te nemen.

De nieuwe klasse wordt een subklasse of afgeleide klasse genoemd. De bestaande klasse staat bekend als een superklasse of basisklasse.

Aspecten:

  • Herbruikbaarheid van code
  • Hiërarchie en specialisatie
  • Overschrijven
  • Polymorfisme
  • Basisklasse en afgeleide klasse


Het fundamentele idee achter overerving is het opzetten van een hiërarchie van klassen. Hierbij kan een subklasse de functionaliteit van zijn superklasse hergebruiken en uitbreiden.


Hoe?

SimpleClass overerving voorbeeld (PHP):


<?php

// Basisklasse
class SimpleClass {
  // Gegevens
  protected $attribuut = "Tekst waarde";

  // Constructor
  public function __construct($waarde) {
    $this->attribuut = $waarde;
  }

  // Gedrag
  public function attribuutWeergeven() {
    return $this->attribuut . "\n";
  }
}

// SubClass die van SimpleClass erft
class SubClass extends SimpleClass {
  // Constructor
  public function __construct($waarde) {
    parent::__construct($waarde);
  }

  // Extra gedrag of aanpassingen kunnen hier worden toegevoegd
  public function extraGedrag() {
    return "Extra gedrag van de subklasse.\n";
  }
}

// Maak een exemplaar aan van SubClass (instance)
$subObject = new SubClass();

// Benader het attribuut met een methode van de basisklasse
echo $subObject->attribuutWeergeven();

// Benader extra gedrag van de subklasse
echo $subObject->extraGedrag();

?>


SimpleClass abstract (PHP):

Abstract class: De Entiteit klasse kan niet geinstantieerd worden, deze klasse dient enkel als basis template voor overerving door de SimpleClass subklassen.


<?php

// Abstracte klasse die de basisfunctionaliteit implementeert
abstract class Entiteit {
  protected $attribuut;

  // Constructor
  public function __construct($waarde) {
    $this->attribuut = $waarde;
  }

  // Getter methode voor het attribuut
  public function getAttribuut() {
    return $this->attribuut;
  }

  // Abstracte methode voor weergeven
  abstract public function weergeven();
}

// Klasse die van Entiteit erft en de weergeven methode implementeert
class SimpleClass extends Entiteit {
  // Implementatie van weergeven methode
  public function weergeven() {
    return $this->getAttribuut() . "\n";
  }
}

// Maak een exemplaar aan van SimpleClass (instantie)
$myObject = new SimpleClass("Tekst waarde");

// Benader het attribuut van het exemplaar direct
echo $myObject->getAttribuut() . "\n";

// Benader het attribuut met een methode
echo $myObject->weergeven();

?>