Sobes.tech
Middle

Kas võib abstraktne klass sisaldada privaatset meetodit ja miks?

sobes.tech AI

Vastus AI-lt

Jah, see on võimalik.

Privaatne meetod abstraktses klassis on nähtav ja kättesaadav ainult selle abstraktses klassis ise. See võib olla kasulik sisemise loogika rakendamisel, mis on vajalik teiste selle klassi meetodite tööks (näiteks abifunktsioonide jaoks), samal ajal peites selle loogika pärilike klasside eest.

Meetodid, mis peavad olema kättesaadavad üle kirjutamiseks või kasutamiseks pärilikes klassides, deklareeritakse kui protected või public.

<?php

abstract class AbstractExample {
    abstract public function doSomething();

    private function internalHelper() {
        // Privaatne meetod, nähtav ainult AbstractExample sees
        echo "Sisemise operatsiooni teostamine.\n";
    }

    protected function protectedHelper() {
        // Kaitstud meetod, nähtav ka pärilikes klassides
        $this->internalHelper(); // Privaatse meetodi väljakutse seest
        echo "Kaitstud operatsiooni teostamine.\n";
    }
}

class ConcreteExample extends AbstractExample {
    public function doSomething() {
        echo "Mõni konkreetne asi.\n";
        $this->protectedHelper(); // Ligipääs protected meetodile
        // $this->internalHelper(); // viga: puudub ligipääs privaatsele meetodile
    }
}

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