PHP OOP - Abstract sinflar haqida
PHP-da abstrakt sinf (abstract class) – bu o‘zidan to‘g‘ridan-to‘g‘ri obyekt yaratib bo‘lmaydigan va boshqa sinflar tomonidan meros olinishi uchun mo‘ljallangan sinfdir.
Abstract sinf bu kamida bitta abstract metodga ega bo'lgan sinf. Abstract sinfdan obyekt yaratib bo'lmaydi balki u boshqa sinflar kengaytirishi uchun foydalaniladi.
Abstrakt sinf abstract kalit so'zi bilan ifodalanadi
abstract class ParentClass {
abstract public function someMethod1();
abstract public function someMethod2($name, $color);
abstract public function someMethod3() : string;
}
Abstract sinfdan obyekt yaratib bo'lmaydi.
Farzand sinf abstract ota sinfdan meros qilib olganda quyidagi qoidalar bor:
1. Farzand sinf metodi ota sinf metodi nomi bilan bir xil bo'lishi kerak va shu metodni qayta e'lon qilish kerak (qayta yozish kerak).
2. Farzand sinf metodi abstract ota sinfdagi bilan bir xil yoki cheklangan (protected lekin private emas, chunki private faqat ota sinfda ishlaydi) kirish modifikatoriga ega bo'lishi kerak
3. Metoddagi argumentlar soni teng bo'lishi kerak
// Ota sinf
abstract class Car {
public $name;
public function __construct($name) {
$this->name = $name;
}
abstract public function intro() : string;
}
// shu metod nomi qayta elon qilinishi (yozilishi) kerak
public function intro() : string {
return "Choose German quality! I'm an $this->name!";
}
}
class Volvo extends Car {
public function intro() : string {
return "Proud to be Swedish! I'm a $this->name!";
}
}
class Citroen extends Car {
public function intro() : string {
return "French extravagance! I'm a $this->name!";
}
}
// Farzand sinfdan obyekt yaratish
$audi = new Audi("Audi");
echo $audi->intro();
echo "<br>";
$volvo = new Volvo("Volvo");
echo $volvo->intro();
echo "<br>";
Yuqoridagi misolda Audi, Volvo, Citroen sinflari Car sinfini kengaytiryapti. Bu shuni anglatadiki ular public modifikatorli $name va __construct() funksiyasi ishlatish mumkin.
Lekin intro() metodi abstract, shuning uchun u qayta yozilishi kerak. (qayta elon qilinishi kerak, qayta aniqlanishi kerak)
Funksiya nomi dan keyin :string kelishi bu funksiya string turidagi ma'lumot qaytarishini bildiradi va funksiya ichida return ishlatiladi.