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) |
| Модулдар | Так жана абстракттык | Тек абстракттык (денеси жок) | Тек тактар |
| Мүлктөр | Ооба | Жок | Ооба |
| Көпмүнөздүү мурас | Жок | Ооба | Жок |
| Максаты | Бөлөк ишке ашыруу, жалпы структура | Контракт аныктоо (карекет) | Толук ишке ашыруу, так объект |
Коддун кайталануусун камсыз кылуу жана структурада бирдиктүүлүк үчүн колдонулат, эгерде жалпы логика жана мүнөздөмөлөр топтому бар болсо, бирок алардын конкреттүү жүрүм-туруму (айрым ыкмалардын ишке ашырылышы) айырмаланат.