Sobes.tech
Middle

Může abstraktní třída obsahovat soukromou metodu a proč?

sobes.tech AI

Odpověď od AI

Ano, to je možné.

Abstraktní třída může obsahovat soukromé (private) metody a vlastnosti. Privátní členové třídy jsou přístupní pouze uvnitř samotné třídy. I třídy, které dědí od abstraktní třídy, nemají přímý přístup k jejím privátním členům.

To je užitečné pro zapouzdření vnitřní logiky nebo pomocných operací, které jsou používány pouze uvnitř samotné abstraktní třídy a nejsou určeny k implementaci nebo změnám v odvozených třídách.

Příklad:

<?php

abstract class AbstractClass
{
    private function internalHelperMethod(): void
    {
        // Pomocná logika používaná pouze uvnitř AbstractClass
        echo "Interní pomocná funkce volána.\n";
    }

    protected function executeInternalHelper(): void
    {
        // Volání privátní metody z chráněné metody dostupné potomkům
        $this->internalHelperMethod();
    }

    abstract public function doSomething(): void;
}

class ConcreteClass extends AbstractClass
{
    public function doSomething(): void
    {
        echo "Implementace doSomething.\n";
        // Není možné přímo zavolat $this->internalHelperMethod();
        $this->executeInternalHelper(); // Ale lze zavolat přes chráněnou metodu
    }
}

// $abstract = new AbstractClass(); // Chyba: Nelze vytvořit instanci abstraktní třídy

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

?>