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:
<?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:
<?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:
<?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:
<?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:
<?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
?>
Tengeneza darasa la abstract Figure,
linawakilisha sura ya kijiometri
Hebu liathiriwe na madarasa
kwa duara, mstatili na mraba.