PHPдеги ООПде абстракциялык класстар
Сизде User деген класс бар деп коёлу, ал эми
андан Employee жана Student класстары
мурасталып турат.
Бул учурда, Employee жана Student класстарынын
объекттерин түзөсүз, бирок User класстарынын
объекттерин түзбөйсүз, анткени бул класс өзүнүн
мурасчыларынын жалпы касиеттери менен методдорун
топтоштуруу үчүн гана колдонулат.
Бул учурда, User класстарынын объекттерин түзүүнү
милдеттүү түрдө тыюу салууга болот, ошондо сиз же башка
программист кээ бир жерде аларды кокусунан түзүп койбойт.
Бул үчүн абстракциялык класстар деп аталган класстар бар. Абстракциялык класстар - бул алардан мурасталууга арналган класстар. Ошону менен бирге, мындай класстардын объекттерин түзүүгө болбойт.
Классты абстракциялык деп жарыялоо үчүн, анын жарыялоосунда
abstract деген ачкыч сөздү жазышыңыз керек:
<?php
abstract class User
{
}
?>
Ошентип, User абстракциялык класстарынын ишке ашырылышын жазалы.
Анын name деген жеке касиети болсун, ошондой эле ага
геттерлер жана сеттерлер болсун:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
?>
User класстарынын объектин түзүүгө аракет кылуу катага алып келет:
<?php
$user = new User; // ката чыгарат
?>
Бирок биздин класстан мурасталууга болот. Биздин
абстракциялык User класстарыбыздан мурасталган
Employee класстарын жасайлы:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
Employee класстарынын объектин түзөлү - баары иштейт:
<?php
$employee = new Employee;
$employee->setName('john'); // ата-эне метод, б.а. User класстарынын
$employee->setSalary(1000); // өз метод, б.а. Employee класстарынын
echo $employee->getName(); // 'john' чыгарат
echo $employee->getSalary(); // 1000 чыгарат
?>
Абстракциялык Figure класстарын жасаңыз,
ал геометриялык фигураны көрсөтсүн. Андан тегерек,
тик бурчтук жана квадрат класстары мурасталсын.