Darasa za Abstract katika OOP katika PHP

Hebu uwe na darasa User, na linachoathiriwa na madarasa Employee na Student.

Wakati huu inadhaniwa, utaunda vitu vya madarasa Employee na Student, lakini vitu vya darasa User - hutakuwa, kwa sababu darasa hili linatumika tu kwa kikundi cha sifa za kawaida na njia za warithi wake.

Katika hali hii inawezekana kwa lazima kukataza kuunda vitu vya darasa User, ili wewe au programu mwingine popote bila bahati usiziunde.

Kwa hili zipo zinazoitwa darasa za abstract Darasa za abstract zinawakilisha madarasa, yaliyokusudiwa k urithi kutoka kwayo. Wakati huu vitu vya madarasa kama hayo haviwezi kuundwa.

Ili kutangaza darasa kuwa abstract, inahitajika wakati wa kutangaza kwake kuandika neno kuu abstract:

User.php<?php
  abstract class User
  {
    
  }
?>

Kwa hivyo, hebu tuandike utekelezaji wa abstract darasa User. Hebu iwe na sifa ya faragha name, na pia getters na setters kwayo:

User.php<?php
  abstract class User
  {
    private $name;
    
    public function getName()
    {
      return $this->name;
    }
    
    public function setName($name)
    {
      $this->name = $name;
    }
  }
?>

Jaribio la kuunda kitu cha darasa User litasababisha hitilafu:

index.php<?php
  $user = new User; // itatoa hitilafu
?>

Lakini kurithi kutoka kwa darasa letu itawezekana. Hebu tutengeneze darasa Employee, ambalo litaurithi kutoka kwa darasa letu la abstract User:

Employee.php<?php
  class Employee extends User
  {
    private $salary;
    
    public function getSalary()
    {
      return $this->salary;
    }
    
    public function setSalary($salary)
    {
      $this->salary = $salary;
    }
    
  }
?>

Hebu tuunde kitu cha darasa Employee - kila kitaenda kazi:

index.php<?php
  $employee = new Employee;
  $employee->setName('john');  // njia ya mzazi, yaani darasa User
  $employee->setSalary(1000);  // njia yake mwenyewe, yaani darasa Employee
  
  echo $employee->getName();   // itatoa 'john'
  echo $employee->getSalary(); // itatoa 1000
?>
Задание 1

Tengeneza darasa la abstract Figure, linawakilisha sura ya kijiometri Hebu liathiriwe na madarasa kwa duara, mstatili na mraba.