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();

Абстракттуу класстар байланышкан класстар үчүн жалпы интерфейс жана функционалдуулукту аныктоо үчүн колдонулат, ишке ашыруу деталдары конкреттүү мурас класстарына калтырылган. Коддун колдонуучусунун көз карашынан, негизги абстракттуу класс түрүндө объекттер менен иштөө мүмкүн, бул полиморфизмди камсыздайт.