Kelas Abstrak dalam OOP dalam PHP
Katakan anda mempunyai kelas User, dan
daripadanya diwarisi kelas Employee dan
Student.
Pada masa yang sama, diandaikan bahawa anda akan mencipta
objek kelas Employee dan Student,
tetapi objek kelas User - tidak akan,
kerana kelas ini digunakan hanya untuk
mengumpulkan sifat dan kaedah umum bagi
pewarisnya.
Dalam kes ini, boleh untuk secara paksa melarang
penciptaan objek kelas User, supaya
anda atau pengaturcara lain di suatu tempat tidak secara tidak sengaja
menciptanya.
Untuk ini wujud apa yang dipanggil kelas abstrak. Kelas abstrak mewakili kelas yang bertujuan untuk diwarisi daripadanya. Pada masa yang sama, objek kelas sedemikian tidak boleh dicipta.
Untuk mengisytiharkan kelas sebagai abstrak,
perlu menulis kata kunci
abstract semasa pengisytiharannya:
<?php
abstract class User
{
}
?>
Jadi, mari kita tulis pelaksanaan
kelas abstrak User. Katakan ia mempunyai sifat
persendirian name, dan juga getter dan setter
untuknya:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
?>
Cubaan untuk mencipta objek kelas User
akan menyebabkan ralat:
<?php
$user = new User; // akan memberikan ralat
?>
Tetapi mewarisi daripada kelas kami akan
boleh. Mari buat kelas Employee, yang
akan mewarisi daripada kelas abstrak kami
User:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
Mari cipta objek kelas Employee -
semua akan berfungsi:
<?php
$employee = new Employee;
$employee->setName('john'); // kaedah induk, iaitu kelas User
$employee->setSalary(1000); // kaedah sendiri, iaitu kelas Employee
echo $employee->getName(); // akan memaparkan 'john'
echo $employee->getSalary(); // akan memaparkan 1000
?>
Buat kelas abstrak Figure,
mewakili bentuk geometri.
Katakan daripadanya diwarisi kelas
untuk bulatan, segi empat tepat dan segi empat sama.