Sobes.tech
Middle

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

sobes.tech AI

Antwoord van AI

Ja, dat is mogelijk.

Een abstracte klasse kan private methoden en eigenschappen bevatten. De private leden van de klasse zijn alleen toegankelijk binnen de klasse zelf. Zelfs klassen die erven van de abstracte klasse hebben geen directe toegang tot haar private leden.

Dit is handig voor het encapsuleren van interne logica of hulpfuncties die alleen binnen de abstracte klasse worden gebruikt en niet bedoeld zijn voor implementatie of wijziging in afgeleide klassen.

Voorbeeld:

<?php

abstract class AbstractClass
{
    private function internalHelperMethod(): void
    {
        // Hulplogica die alleen binnen AbstractClass wordt gebruikt
        echo "Interne hulpfunctie aangeroepen.\n";
    }

    protected function executeInternalHelper(): void
    {
        // Roep de private methode aan vanuit een beschermde methode die toegankelijk is voor afgeleide klassen
        $this->internalHelperMethod();
    }

    abstract public function doSomething(): void;
}

class ConcreteClass extends AbstractClass
{
    public function doSomething(): void
    {
        echo "Implementatie van doSomething.\n";
        // Kan $this->internalHelperMethod(); niet direct aanroepen
        $this->executeInternalHelper(); // Maar kan via de beschermde methode worden aangeroepen
    }
}

// $abstract = new AbstractClass(); // Fout: Kan geen instantie van een abstracte klasse maken

$concrete = new ConcreteClass();
$concrete->doSomething();

?>