Sobes.tech
Middle

Poate o clasă abstractă să conțină o metodă privată și de ce?

sobes.tech AI

Răspuns de la AI

Da, poate.

Metoda privată într-o clasă abstractă este vizibilă și accesibilă doar în interiorul clasei abstracte în sine. Acest lucru poate fi util pentru implementarea logicii interne necesare pentru funcționarea altor metode ale acestei clase (de exemplu, operații auxiliare), ascunzând această logică de clasele care moștenesc.

Metodele care trebuie să fie disponibile pentru a fi suprascrise sau utilizate în clasele derivate sunt declarate ca protected sau public.

<?php

abstract class AbstractExample {
    abstract public function doSomething();

    private function internalHelper() {
        // Metodă privată, vizibilă doar în interiorul AbstractExample
        echo "Execut o operație internă.\n";
    }

    protected function protectedHelper() {
        // Metodă protejată, vizibilă și în clasele moștenitoare
        $this->internalHelper(); // Apel al metodei private din interior
        echo "Execut o operație protejată.\n";
    }
}

class ConcreteExample extends AbstractExample {
    public function doSomething() {
        echo "Fac ceva specific.\n";
        $this->protectedHelper(); // Acces la metodă protected
        // $this->internalHelper(); // Eroare: nu se poate accesa metoda privată
    }
}

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