Sobes.tech
Junior

Класси абстрактӣ чист?

sobes.tech AI

Ҷавоб аз AI

Класи абстрактӣ — ин синфест, ки мустақиман наметавонад ба он намуна гирифта шавад, яъне наметавон объекти онро бо new сохт. Он барои истифода ҳамчун синфи асосӣ барои синфҳои дигар (подсинфҳо) пешбинӣ шудааст.

Хусусиятҳои асосии синфи абстрактӣ:

  • Бо калидвожа abstract эълон мешавад.
  • Мумкин аст, ки дорои методҳои абстрактӣ ва оддӣ (конкретӣ) бошад.
  • Методҳои абстрактӣ бо калидвожа abstract эълон мешаванд ва бадан (имплементация) надоранд. Онҳо бояд дар синфҳои неабстрактӣ, ки онҳоро мерос мегиранд, иҷро шаванд.
  • Мумкин аст, ки арзишҳои константӣ ва хосиятҳо дошта бошад.
<?php

abstract class AbstractClass
{
    // Метод абстрактӣ - бояд дар синфи фарзандаш иҷро шавад
    abstract protected function abstractMethod();

    // Метод оддӣ
    public function concreteMethod()
    {
        echo "Ин як методи конкретӣ\n";
    }
}

class ConcreteClass extends AbstractClass
{
    // Иҷрои методаи абстрактӣ
    protected function abstractMethod()
    {
        echo "Ин иҷрои методаи абстрактӣ\n";
    }
}

// Нест, ки метавон намунаи синфи абстрактиро сохт
// $obj = new AbstractClass(); // Хатогӣ

// Мумкин аст, ки намунаи синфи конкретиро сохт
$obj = new ConcreteClass();
$obj->abstractMethod();
$obj->concreteMethod();

Синфҳои абстрактӣ барои муайян кардани интерфейс ва функсионалӣ умумӣ барои гурӯҳи синфҳои алоқаманд истифода мешаванд, бо гузоштани тафсилоти иҷроиш ба синфҳои фарзанди махсус. Аз нуқтаи назари корбар, бо истифода аз намуди синфи асосии абстрактӣ метавон бо объектҳои синфҳои фарзанд кор кард, ки ин полиморфизмро таъмин мекунад.