Abstrakte Metodes in OOP in PHP
Abstrakte klasse kan ook abstrakte metodes bevat. Sulke metodes moet nie implementering hê nie, en is nodig om aan te dui dat sulke metodes by afstammelinge moet wees. En die werklike implementering van sulke metodes is reeds die taak van die afstammelinge.
Om 'n metode as abstrak te verklaar,
moet die sleutelwoord
abstract tydens die verklaaring daarvan geskryf word.
Kom ons probeer dit in die praktyk. Laat ons aanneem
dat alle afstammelinge van die klas User
die metode increaseRevenue moet hê.
Hierdie metode moet die huidige inkomste van die gebruiker neem en dit met 'n sekere waarde verhoog, wat as parameter oorgedra word.
Die klas User self weet nie watter soort
inkomste die erfgenaam sal hê nie - vir 'n werknemer
is dit 'n salaris, en vir 'n student is dit 'n beurs. Daarom
sal elke afstammeling hierdie metode
op sy eie manier implementeer.
Die kern is dat die abstrakte metode van die klas
User die programmeerder dwing om
hierdie metode in die afstammelinge te implementeer, anders sal PHP 'n fout gee.
Sodoende kan jy, of 'n ander programmeerder,
wat met jou kode werk, op geen manier
vergeet om die nodige metode te implementeer
in die afstammeling nie.
So, kom ons probeer dit in die praktyk. Laat ons
die abstrakte metode increaseRevenue byvoeg
in die klas User:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
// Abstrakte metode sonder liggaam:
abstract public function increaseRevenue($value);
}
?>
Laat ons klas Employee vir eers
sonder veranderinge bly. In hierdie geval, selfs al word nie
'n objek van die klas Employee geskep nie,
maar net die kode waar ons klasse gedefinieer word, gestart,
- sal PHP 'n fout gee.
Kom ons skryf nou die implementering van die metode
increaseRevenue in die klas
Employee:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
// Laat ons die metode implementering skryf:
public function increaseRevenue($value)
{
$this->salary = $this->salary + $value;
}
}
?>
Kom ons toets die werk van ons klas:
<?php
$employee = new Employee;
$employee->setName('john');
$employee->setSalary(1000);
$employee->increaseRevenue(100);
echo $employee->getSalary();
?>
Laat ons die metode increaseRevenue ook implementeer
in die klas Student. Net dat nou ons
metode die beurs sal verhoog:
<?php
class Student extends User
{
private $scholarship; // beurs
public function getScholarship()
{
return $this->scholarship;
}
public function setScholarship($scholarship)
{
$this->scholarship = $scholarship;
}
// Metode verhoog die beurs:
public function increaseRevenue($value)
{
$this->scholarship = $this->scholarship + $value;
}
}
?>
Voeg by jou klas User dieselfde
abstrakte metode increaseRevenue by.
Skryf die implementering van hierdie metode in die klasse
Employee en Student.
Maak in die klas Figure abstrakte
metodes om die oppervlakte en omtrek van die figuur te kry.