Sobes.tech
Middle

Vai abstraktā klase var saturēt privātu metodi un kāpēc?

sobes.tech AI

Atbilde no AI

Jā, tas ir iespējams.

Privāta metode abstraktā klasē ir redzama un pieejama tikai pašā abstraktajā klasē. Tas var būt noderīgi, īstenojot iekšējo loģiku, kas ir nepieciešama citu šīs klases metožu darbībai (piemēram, palīgoperācijām), vienlaikus slēpjot šo loģiku no mantojošajām klasēm.

Metodes, kuras jābūt pieejamām pārdefināšanai vai izmantošanai mantojošajās klasēs, tiek deklarētas kā protected vai public.

<?php

abstract class AbstractExample {
    abstract public function doSomething();

    private function internalHelper() {
        // Privāta metode, redzama tikai iekšā AbstractExample
        echo "Veicu iekšēju operāciju.\n";
    }

    protected function protectedHelper() {
        // Aizsargāta metode, redzama arī mantojošajās klasēs
        $this->internalHelper(); // Izsaukums no iekšpuses
        echo "Veicu aizsargātu operāciju.\n";
    }
}

class ConcreteExample extends AbstractExample {
    public function doSomething() {
        echo "Veicu kaut ko specifisku.\n";
        $this->protectedHelper(); // Pieeja protected metodei
        // $this->internalHelper(); // Kļūda: nav piekļuves privātai metodei
    }
}

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