Middle
Ar abstrakti klasė gali turėti privačią metodą ir kodėl?
sobes.tech AI
Atsakymas iš AI
Taip, tai įmanoma.
Privatus metodas abstrakčioje klasėje yra matomas ir prieinamas tik pačioje abstrakčioje klasėje. Tai gali būti naudinga įgyvendinant vidinę logiką, kuri yra būtina kitų šios klasės metodų veikimui (pavyzdžiui, pagalbines operacijas), tuo pačiu slepiant šią logiką nuo paveldinčių klasių.
Metodai, kurie turi būti prieinami perrašymui arba naudojimui paveldinčiose klasėse, deklaruojami kaip protected arba public.
<?php
abstract class AbstractExample {
abstract public function doSomething();
private function internalHelper() {
// Privatus metodas, matomas tik AbstractExample viduje
echo "Vidinė operacija vykdoma.\n";
}
protected function protectedHelper() {
// Apsaugotas metodas, matomas ir paveldinčiose klasėse
$this->internalHelper(); // Iškvietimas iš vidaus
echo "Apsaugota operacija vykdoma.\n";
}
}
class ConcreteExample extends AbstractExample {
public function doSomething() {
echo "Konkretus veiksmas.\n";
$this->protectedHelper(); // prieiga prie protected metodo
// $this->internalHelper(); // klaida: prieigos prie privataus metodo nėra
}
}
$obj = new ConcreteExample();
$obj->doSomething();