Junior
Abstrakt sinfning mohiyati nima?
sobes.tech AI
AIdan javob
Bir abstrakt sinfning maqsadi, boshqa sinflar uchun shablon bo‘lib xizmat qilishdir. U to‘g‘ridan-to‘g‘g‘ri yaratilmaydi, ammo unda abstrakt metodlar (jismisiz) bo‘lishi mumkin va ular voris sinflar tomonidan amalga oshirilishi kerak, shuningdek, aniq metodlar va xususiyatlar ham bo‘lishi mumkin.
Asosiy nuqtalar:
- Nusxa olish mumkin emas:
new AbstraktSinf()xatolik keltirib chiqaradi. - Merosi: Faqatgina abstrakt sinfdan meros olish mumkin (
extends). - Abstrakt metodlar: Voris sinflar amalga oshirishi kerak bo‘lgan interfeysni belgilaydi.
abstractkalit so‘zi bilan belgilangan va jismisiz. - Aniq metodlar va xususiyatlar: To‘g‘ridan-to‘g‘ri belgilanishi va ishlatilishi mumkin, shuningdek, voris sinflarda qayta yozilishi mumkin.
- Qisman amalga oshirish: Umumiy tuzilmani va ba’zi asosiy funksionallikni ta’minlaydi, amalga oshirish tafsilotlarini voris sinflarga qoldiradi.
Misol:
<?php
abstract class Figura {
protected $rang;
public function __construct($rang) {
$this->rang = $rang;
}
abstract public function hisoblaMaydon(); // Abstrakt metod
public function olganRang() {
return $this->rang;
}
}
class Aylana extends Figura {
private $radius;
public function __construct($rang, $radius) {
parent::__construct($rang);
$this->radius = $radius;
}
public function hisoblaMaydon() {
return pi() * $this->radius * $this->radius;
}
}
class Kvadrat extends Figura {
private $tomoni;
public function __construct($rang, $tomoni) {
parent::__construct($rang);
$this->tomoni = $tomoni;
}
public function hisoblaMaydon() {
return $this->tomoni * $this->tomoni;
}
}
// Foydalanish misoli
$aylana = new Aylana("Qizil", 5);
echo "Maydon: " . $aylana->hisoblaMaydon() . ", Rang: " . $aylana->olganRang() . "\n";
$kvadrat = new Kvadrat("Ko‘k", 4);
echo "Maydon: " . $kvadrat->hisoblaMaydon() . ", Rang: " . $kvadrat->olganRang() . "\n";
// Quyidagi kod xatolik keltiradi: Abstrakt sinfni instansiya qilish
// $abstraktFigura = new Figura("Noma’lum");
Sinf va interfeyslar taqqoslash jadvali:
| Xususiyat | Abstrakt sinf | Interfeys | Oddiy sinf |
|---|---|---|---|
| Nusxa olish | Yo‘q | Yo‘q | Ha |
| Merosi | Ha (extends) + Amalga oshirish (implements) |
Faqat Amalga oshirish (implements) |
Ha (extends) |
| Metodlar | Aniq va abstraktlar | Faqat abstrakt (g‘ovdelsiz) | Faqat aniq |
| Xususiyatlar | Ha | Yo‘q | Ha |
| Ko‘p meros | Yo‘q | Ha | Yo‘q |
| Ma’nosi | Qisman amalga oshirish, umumiy tuzilma | Shartnoma (xulq-atvor) belgilash | To‘liq amalga oshirish, aniq obyekt |
Ushbu yondashuv, bog‘liq sinflar guruhida bo‘lishi kerak bo‘lgan umumiy logika va xususiyatlar mavjud bo‘lsa, lekin ularning aniq xulq-atvori (ba’zi metodlarning amalga oshirilishi) farq qiladigan hollarda qo‘llaniladi. Bu kodni qayta ishlatish va sinf tuzilmasida yagona tartibni ta’minlaydi.