Sobes.tech
Middle

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

sobes.tech AI

Odpověď od AI

Ano, to je možné.

Soukromá metoda v abstraktní třídě je viditelná a přístupná pouze uvnitř samotné abstraktní třídy. To může být užitečné pro implementaci vnitřní logiky, která je nezbytná pro fungování jiných metod této třídy (například pomocné operace), přičemž tato logika je skryta před dědícími třídami.

Metody, které mají být dostupné k přepsání nebo použití v odvozených třídách, jsou deklarovány jako protected nebo public.

<?php

abstract class AbstractExample {
    abstract public function doSomething();

    private function internalHelper() {
        // Soukromá metoda, viditelná pouze uvnitř AbstractExample
        echo "Provádím interní operaci.\n";
    }

    protected function protectedHelper() {
        // Chráněná metoda, také viditelná v dědících třídách
        $this->internalHelper(); // Volání soukromé metody zevnitř
        echo "Provádím chráněnou operaci.\n";
    }
}

class ConcreteExample extends AbstractExample {
    public function doSomething() {
        echo "Dělám něco konkrétního.\n";
        $this->protectedHelper(); // Přístup k protected metodě
        // $this->internalHelper(); // Chyba: nelze přistoupit k soukromé metodě
    }
}

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