Abstrakt siniflar PHP-də OOP-də
Tutaq ki, sizin User sinfiniz var,
və ondan Employee ve Student
sinifleri miras alır.
Eyni zamanda güman edilir ki, siz Employee
ve Student siniflerinin obyektlerini
yaradacaqsınız, amma User sinfinin
obyektlerini yaratmayacaqsınız, çünki bu sinif
yalnız öz varislərinin ümumi xüsusiyyət ve
metodlarını qruplaşdırmaq üçün istifadə olunur.
Bu halda User sinfinin obyektlerini
yaratmağı məcburi qadağan edə bilərsiniz, beləliklə
siz və ya başqa proqramçı hardasa onları təsadüfən
yaratmaz.
Bunun üçün sözdə abstrakt siniflər mövcuddur. Abstrakt siniflər onlardan miras almaq üçün nəzərdə tutulmuş siniflərdir. Eyni zamanda belə siniflərin obyektlerini yaratmaq olmaz.
Sinifi abstrakt elan etmək üçün onun elanı zamanı
abstract açar sözünü yazmaq lazımdır:
<?php
abstract class User
{
}
?>
Beləliklə, gəlin User abstrakt sinfinin
realizasiyasını yazaq. Tutaq ki, onun name
private xüsusiyyəti, eləcə də onun üçün getter və
setter-lar olacaq:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
?>
User sinfinin obyektini yaratmaq cəhdi
xəta yaradacaq:
<?php
$user = new User; // xəta verəcək
?>
Amma bizim sinfimizdən miras almaq mümkün olacaq.
Gəlin User abstrakt sinfindən miras alan
Employee sinfini yaradaq:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
Gəlin Employee sinfinin obyektini yaradaq -
hər şey işləyəcək:
<?php
$employee = new Employee;
$employee->setName('john'); // valideyn metodu, yəni User sinfinin metodu
$employee->setSalary(1000); // öz metodu, yəni Employee sinfinin metodu
echo $employee->getName(); // 'john' çıxardacaq
echo $employee->getSalary(); // 1000 çıxardacaq
?>
Figure abstrakt sinfini yaradın,
hansı ki, həndəsi fiquru təmsil edir.
Qoy ondan çevrə, düzbucaqlı və kvadrat
üçün siniflər miras alsın.