Abstraktās klases OOP PHP
Pieņemsim, ka jums ir klase User, un no
tiem mantojas klases Employee un
Student.
Šajā gadījumā tiek pieņemts, ka jūs izveidosiet
klases Employee un Student objektus,
bet klases User objektus - neizveidosiet,
jo šī klase tiek izmantota tikai
savu mantinieku kopīgo īpašību un metožu
grupēšanai.
Šajā gadījumā varat piespiedu kārtā aizliegt
izveidot klases User objektus, lai
jūs vai cits programmētājs kaut kur nejauši
tos neizveidotu.
Šim nolūkam pastāv tā sauktās abstraktās klases. Abstraktās klases ir klases, kas paredzētas mantot no tām. Tajā pašā laikā šādu klases objektus nevar izveidot.
Lai deklarētu klasi kā abstraktu,
jums tās deklarēšanas laikā jāraksta atslēgvārds
abstract:
<?php
abstract class User
{
}
?>
Tātad, uzrakstīsim abstraktās
klases User realizāciju. Lai tai būtu privāts
īpašums name, kā arī getteri un setteri
priekš tā:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
?>
Mēģinājums izveidot klases User objektu
izraisīs kļūdu:
<?php
$user = new User; // izvadīs kļūdu
?>
Bet mantot no mūsu klases būs
iespējams. Izveidosim klasi Employee, kas
mantos no mūsu abstraktās
klases User:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
Izveidosim klases Employee objektu -
viss darbosies:
<?php
$employee = new Employee;
$employee->setName('john'); // vecāka metode, t.i., klases User
$employee->setSalary(1000); // paša metode, t.i., klases Employee
echo $employee->getName(); // izvadīs 'john'
echo $employee->getSalary(); // izvadīs 1000
?>
Izveidojiet abstraktu klasi Figure,
kas ir ģeometriska
figūra. Lai no tās manto klases
apļam, taisnstūrim un kvadrātam.