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();