PHP-dä OOP-da Abstrakt Klasslar
Diňleň, siziň User klassyňyz bar we
ondan Employee we Student
klasslary miras alýar.
Şu ýerde, Employee we Student
klasslarynyň obýektlerini döredersiňiz,
ýöne User klassyň obýektini döretmersiňiz,
sebäbi bu klass diňe öz mirasçylarynyň
umumy aýratynlyklary we usullary üçin
ulanylýar.
Bu ýagdaýda, User klassyň obýektlerini
döretmek mejbur etmeli gadagan edilip bilner,
şonuň üçin siz ýa-da başga programmaçy nädogrylyk bilen
olary ýerde döretmez.
Bunun üçin abstrakt klasslar diýilýän zat bar. Abstrakt klasslar, olardan miras almak üçin niredelenen klasslardyr. Şu ýagdaýda, şeýle klasslaryň obýektlerini döretmek bolmaýar.
Klassy abstrakt hökmünde yglan etmek üçin,
ony yglan edende abstract açar sözüni ýazmaly:
<?php
abstract class User
{
}
?>
Şeýlelik bilen, geliň User abstrakt klassyň
amalyna ýazalyň. Oňa hususy aýratynlyk
name we onuň üçin getter we setterler bolsun:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
?>
User klassyň obýektini döretmek synanyşygy
ýalňyşlygy döreder:
<?php
$user = new User; // ýalňyşlyk berer
?>
Ýöne, bizim klassyňyzdan miras almak
mümkin bolar. Employee klassy ýasaýarys, ol
bizim User abstrakt klassyňyzdan miras alar:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
Employee klassyň obýektini döredeliň -
hemme zady işler:
<?php
$employee = new Employee;
$employee->setName('john'); // atanyň usuly, ýagny User klassyň
$employee->setSalary(1000); // öz usuly, ýagny Employee klassyň
echo $employee->getName(); // 'john' çykarar
echo $employee->getSalary(); // 1000 çykarar
?>
Abstrakt Figure klassy ýasaň,
geometrik şekili görkezýän.
Ondan töwerek, dikdörtgen we inedördül
klasslary miras alsyn.