Sobes.tech
Middle

Môže abstraktná trieda obsahovať súkromnú metódu a prečo?

sobes.tech AI

Odpoveď od AI

Áno, je to možné.

Súkromná metóda v abstraktnej triede je viditeľná a prístupná iba v rámci samotnej abstraktnej triedy. To môže byť užitočné na implementáciu vnútorných logík, ktoré sú potrebné pre fungovanie iných metód tejto triedy (napríklad pomocné operácie), pričom táto logika je skrytá pred dediaciami.

Metódy, ktoré majú byť dostupné na prepísanie alebo použitie v odvodzujúcich triedach, sú deklarované ako protected alebo public.

<?php

abstract class AbstractExample {
    abstract public function doSomething();

    private function internalHelper() {
        // Súkromná metóda, viditeľná iba v rámci AbstractExample
        echo "Vykonávam vnútornú operáciu.\n";
    }

    protected function protectedHelper() {
        // Chránená metóda, tiež viditeľná v odvodzujúcich triedach
        $this->internalHelper(); // Volanie súkromnej metódy zvnútra
        echo "Vykonávam chránenú operáciu.\n";
    }
}

class ConcreteExample extends AbstractExample {
    public function doSomething() {
        echo "Robím niečo špecifické.\n";
        $this->protectedHelper(); // Prístup k protected metóde
        // $this->internalHelper(); // Chyba: nemá prístup k súkromnej metóde
    }
}

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