Kelas Abstrak dalam OOP di PHP
Misalkan Anda memiliki kelas User, dan
darinya diwarisi kelas Employee dan
Student.
Dan diasumsikan bahwa Anda akan membuat
objek dari kelas Employee dan Student,
tetapi objek dari kelas User - tidak akan,
karena kelas ini hanya digunakan untuk
mengelompokkan properti dan metode umum untuk
turunannya.
Dalam hal ini, Anda dapat secara paksa melarang
pembuatan objek dari kelas User, agar
Anda atau programmer lain tidak secara tidak sengaja
membuatnya di suatu tempat.
Untuk ini, ada yang disebut kelas abstrak. Kelas abstrak adalah kelas yang dimaksudkan untuk diwarisi. Namun, objek dari kelas seperti itu tidak dapat dibuat.
Untuk mendeklarasikan kelas sebagai abstrak,
Anda perlu menulis kata kunci abstract
pada deklarasinya:
<?php
abstract class User
{
}
?>
Jadi, mari kita tulis implementasi dari kelas
abstrak User. Misalkan kelas ini memiliki properti
privat name, serta getter dan setter
untuknya:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
?>
Upaya untuk membuat objek dari kelas User
akan menyebabkan error:
<?php
$user = new User; // akan menghasilkan error
?>
Namun, mewarisi dari kelas kita akan
mungkin. Mari buat kelas Employee yang
mewarisi dari kelas abstrak kita User:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
Mari buat objek dari kelas Employee -
semua akan bekerja:
<?php
$employee = new Employee;
$employee->setName('john'); // metode induk, yaitu dari kelas User
$employee->setSalary(1000); // metode sendiri, yaitu dari kelas Employee
echo $employee->getName(); // akan menampilkan 'john'
echo $employee->getSalary(); // akan menampilkan 1000
?>
Buatlah kelas abstrak Figure,
yang merepresentasikan sebuah bentuk
geometris. Misalkan kelas untuk
lingkaran, persegi panjang, dan persegi mewarisi darinya.