Sobes.tech
Middle

Kan een abstracte klasse een privé-methode bevatten en waarom?

sobes.tech AI

Antwoord van AI

Ja, dat is mogelijk.

De private methode in een abstracte klasse is alleen zichtbaar en toegankelijk binnen die abstracte klasse zelf. Dit kan handig zijn voor het implementeren van interne logica die nodig is voor de werking van andere methoden van die klasse (bijvoorbeeld hulpfuncties), terwijl deze logica verborgen blijft voor de afgeleide klassen.

Methoden die beschikbaar moeten zijn voor overschrijving of gebruik in afgeleide klassen worden gedeclareerd als protected of public.

<?php

abstract class AbstractExample {
    abstract public function doSomething();

    private function internalHelper() {
        // Privé methode, alleen zichtbaar binnen AbstractExample
        echo "Voer interne operatie uit.\n";
    }

    protected function protectedHelper() {
        // Beschermde methode, ook zichtbaar in afgeleide klassen
        $this->internalHelper(); // Aanroep van privé methode van binnenuit
        echo "Voer beschermde operatie uit.\n";
    }
}

class ConcreteExample extends AbstractExample {
    public function doSomething() {
        echo "Iets specifieks doen.\n";
        $this->protectedHelper(); // Toegang tot protected methode
        // $this->internalHelper(); // Fout: geen toegang tot privé methode
    }
}

$obj = new ConcreteExample();
$obj->doSomething();