Sobes.tech
Junior

Абстракттык классынын мааниси эмнеде?

sobes.tech AI

AIден жооп

Абстракттуу класс башка класстар үчүн үлгү катары кызмат кылат. Ал түздөн-түз түзүлө албайт, бирок абстракттуу ыкмалар (денеси жок) жана ошондой эле так ыкмалар жана мүнөздөмөлөрдү камтышы мүмкүн.

Негизги учурлар:

  • Нусха түзө албайсыз: new АбстрактКласс() ката чыгарат.
  • Мурас алуу: Жай гана мурас алуу (extends).
  • Абстракт ыкмалар: Интерфейсти аныктайт, ал төмөнкү класстар тарабынан ишке ашырылышы керек. abstract ачкыч сөзү менен белгиленет жана денеси жок.
  • Так ыкмалар жана мүнөздөмөлөр: Түздөн-түз аныкталып, колдонулушу мүмкүн, ошондой эле кайра жазылышы мүмкүн.
  • Бөлөк ишке ашыруу: Жалпы структура жана белгилүү бир негизги функцияларды камсыз кылат, ишке ашыруу чоо-жайларын төмөнкү класстарга калтырат.

Мисал:

<?php

abstract class Форм {
    protected $түс;

    public function __construct($түс) {
        $this->түс = $түс;
    }

    abstract public function ачыктооАянты(); // Абстракт ыкма

    public function алууТүс() {
        return $this->түс;
    }
}

class Дөңгөлөк extends Форм {
    private $радиус;

    public function __construct($түс, $радиус) {
        parent::__construct($түс);
        $this->радиус = $радиус;
    }

    public function ачыктооАянты() {
        return pi() * $this->радиус * $this->радиус;
    }
}

class Төрт бурчтук extends Форм {
    private $жана;

    public function __construct($түс, $жана) {
        parent::__construct($түс);
        $this->жана = $жана;
    }

    public function ачыктооАянты() {
        return $this->жана * $this->жана;
    }
}

// Колдонуучу мисал
$дөңгөлөк = new Дөңгөлөк("Кызыл", 5);
echo "Дөңгөлөктүн аянты: " . $дөңгөлөк->ачыктооАянты() . ", Түс: " . $дөңгөлөк->алууТүс() . "\n";

$төрт бурчтук = new Төрт бурчтук("Көк", 4);
echo "Төрт бурчтуктун аянты: " . $төрт бурчтук->ачыктооАянты() . ", Түс: " . $төрт бурчтук->алууТүс() . "\n";

// Кийинки код катаны чыгарат: Fatal error: Абстракт класс түзө албайсыз
// $абстракттууФорм = new Форм("Белгисиз");

Теңдөө таблицасы интерфейстер менен жөнөкөй класс менен:

Өзгөчөлүк Абстракттуу класс Интерфейс Жөнөкөй класс
Мисал түзүү Жок Жок Ооба
Мурас алуу Ооба (extends) + Ишке ашыруу (implements) Тек Ишке ашыруу (implements) Ооба (extends)
Модулдар Так жана абстракттык Тек абстракттык (денеси жок) Тек тактар
Мүлктөр Ооба Жок Ооба
Көпмүнөздүү мурас Жок Ооба Жок
Максаты Бөлөк ишке ашыруу, жалпы структура Контракт аныктоо (карекет) Толук ишке ашыруу, так объект

Коддун кайталануусун камсыз кылуу жана структурада бирдиктүүлүк үчүн колдонулат, эгерде жалпы логика жана мүнөздөмөлөр топтому бар болсо, бирок алардын конкреттүү жүрүм-туруму (айрым ыкмалардын ишке ашырылышы) айырмаланат.