Tutorial Belajar OOP PHP Part 15 (Abstract Class & Abstract Method)
Tutorial Belajar OOP PHP Part 15 (Abstract Class & Abstract Method)
BELAJAR OBJEK PHP BELAJAR OOP PHP OOP PHP PEMROGRAMAN BERBASIS OBJEK PENGERTIAN ABSTRACT CLASS
Category: Tutorial PHP
Dalam tutorial belajar OOP PHP kali ini kita akan membahas tentang pengertian abstract class dan
abstract method dalam pemrograman objek, serta cara pembuatan abstract class dan abstract
method dengan PHP.
1 <?php
2 abstract class komputer {
3 // isi dari class komputer
4 }
?>
5
Untuk membuat abstract class di dalam PHP, kita tinggal menambahkan keyword abstract sebelum
nama class. Sebuah abstract class bisa memiliki property dan method biasa layaknya sebuah class
‘normal’, namun juga bisa memiliki abstract method.
Cara Membuat Abstract Method
Jika sebuah method dinyatakan sebagai abstract method, maka kita tidak perlu membuat isi
methodnya, tetapi hanya signature dari method tersebut. Signature terdiri dai nama method dan
parameternya (jika ada) seperti contoh berikut:
Kenapa kita tidak perlu membuat isi dari method? Ini karena jika sebuah method dinyatakan
sebagaiabstract method, isi dari method tersebut akan dibuat dalam class turunan. Abstract
method harusberada di dalam abstract class.
Sebagai contoh, berikut adalah cara penulisan abstract method lihat_spec() di dalam abstract
classkomputer:
1 <?php
2 abstract class komputer {
3 abstract public function lihat_spec();
4 }
?>
5
Perhatikan bahwa kita tidak perlu (baca:tidak bisa) membuat isi dari abstract method.
1
2 <?php
// buat abstract class
3 abstract class komputer{
4
5 // buat abstract method
6 abstract public function lihat_spec($pemilik);
7
8 // buat method ‘biasa’
9 public function hidupkan_komputer(){
echo "Hidupkan Komputer";
10 }
11 }
12 ?>
13
1
2 <?php
3 // buat abstract class
4 abstract class komputer{
5 // buat abstract method
abstract public function lihat_spec();
6 }
7
8 class laptop extends komputer{
9 public function beli_laptop(){
10 return "Beli Laptop...";
11 }
}
12
13 // buat objek dari class laptop
14 $laptop_baru = new laptop();
15
16 // Fatal error: Class laptop contains 1 abstract method
17 // and must therefore be declared abstract or implement
18 // the remaining methods (komputer::lihat_spec)
?>
19
20
Dalam contoh diatas, saya menurunkan class komputer kepada class laptop. Karena class
komputeradalah abstract class dan memiliki abstract method lihat_spec(), maka di dalam class
laptop kita harus membuat ulang method lihat_spec(). Jika tidak, akan terjadi kode error seperti
diatas. Untuk mengatasinya, mari kita revisi kode diatas menjadi berikut ini :
1
2
3 <?php
4 // buat abstract class
abstract class komputer{
5 // buat abstract method
6 abstract public function lihat_spec();
7 }
8
9 class laptop extends komputer{
10
11 // implementasi abstract method
public function lihat_spec(){
12 return "Lihat Spec Laptop...";
13 }
14
15 // method 'biasa'
16 public function beli_laptop(){
return "Beli Laptop...";
17
}
18 }
19
20 // buat objek dari class laptop
21 $laptop_baru = new laptop();
22 echo $laptop_baru->lihat_spec();
// Lihat Spec Laptop...
23
24 echo "<br />";
25
26 echo $laptop_baru->beli_laptop();
27 // Beli Laptop...
28 ?>
29
30
Dalam kode diatas, method lihat_spec() telah kita implementasikan di dalam class laptop. Fitur inilah
yang menjadi fungsi dari abstract method, yakni ‘memaksa’ setiap class turunan untuk
memilikimethod lihat_spec().
Implementasi dari abstract method, juga harus sesuai dengan signaturenya, yakni nama
methodbeserta parameter. Jika kita membuat abstract method lihat_spec($merk), maka di dalam
class turunan, kita juga harus membuat $merk sebagai parameter method. Jika tidak, maka PHP akan
menghasilkan error sebagai berikut:
1 <?php
// buat abstract class
2
3
abstract class komputer{
4 // buat abstract method
5 abstract public function lihat_spec($pemilik);
6 }
7
8 class laptop extends komputer{
public function lihat_spec(){
9
return "Lihat Spec Laptop...";
10 }
11 }
12
13 // buat objek dari class laptop
14 $laptop_baru = new laptop();
15
// Fatal error: Declaration of laptop::lihat_spec()
16
// must be compatible with komputer::lihat_spec($pemilik)
17 ?>
18
19
1
2 <?php
// buat abstract class
3
abstract class komputer{
4 // buat abstract method
5 abstract public function lihat_spec($pemilik);
6
7 public static function hidupkan_komputer(){
8 echo "Hidupkan Komputer";
9
}
10
}
11
12 echo komputer::hidupkan_komputer();
13 // Hidupkan Komputer
14 ?>
15
1
2 <?php
3 // buat abstract class
4 abstract class komputer{
5 // buat abstract method
6 abstract public function lihat_spec();
abstract public function lihat_processor();
7 abstract public function lihat_harddisk();
8 abstract public function lihat_pemilik();
9 }
10
11 class laptop extends komputer{
12 // .. isi class laptop
}
13
14 class pc extends komputer{
15 // .. isi class pc
16 }
17
18 class netbook extends komputer{
19 // .. isi class netbook
}
20 ?>
21
22
Dengan membuat class komputer sebagai abstract, maka kita bisa menebak bahwa di dalam class
laptop, class pc dan class netbook, pasti memiliki method lihat_spec(), lihat_processor(),
lihat_harddisk() dan lihat_pemilik(). Dengan demikian, kita bisa membuat program yang lebih
terstruktur.
Dalam tutorial OOP PHP berikutnya, kita akan membahas tentang Object Interfaces atau dikenal
dengan sebutan Interface saja. Interface di dalam pemograman objek sangat mirip dengan abstract
class. Kita akan membahas pengertian, cara penggunaan serta perbedaan Object Interface dengan
Abstract Class.