Tutorial Belajar PHP Part 37 – Memahami Fungsi Abstract Class dan Abstract Method
Selamat datang di warung belajar, melanjutkan pembahasan dari seri tutorial PHP Part 37, dalam tutorial kali ini kita akan membahas mengenai Fungsi Abstract Class dan Abstract Method.
Jika anda belum mengenal istilah class ataupun method, anda dapat melihat tutorial kami sebelumnya : Mengenal Class, Property, Method dan Object di OOP PHP
Abstract Class adalah sebuah class yang tidak dapat diinstansiasi atau lebih mudahnya tidak dapat digunakan dalam pembuatan object, Abstract class hanya berisi fungsi – fungsi dari sebuah class, abstract class harus diimplementasikan di class turunannya, untuk pembahasan mengenai kelas turunan atau inheritance anda dapat membaca dalam tutorial kita sebelumnya memahami konsep inheritance (Pewarisan) di OOP
Abstract Method adalah sebuah method yang harus diimplementasikan oleh child class, Abstract method ini harus berada pada abstract class atau interface, abstract method tidak memiliki body method, sehingga anda tidak perlu membuat kurung kurawal pembuka dan penutup { } untuk menuliskan logic dari abstract method ini, abstract method juga harus didefinisikan ulang pada class turunannya, karena jika tidak didefinisikan ulang maka akan terjadi error.
Agar tidak bingung perhatikan contoh skrip dibawah :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php abstract class hewan{ abstract function bersuara(); } class kucing extends hewan{ function bersuara() { return 'Meong'; } } $kucing_budi = new kucing(); echo $kucing_budi->bersuara(); ?> |
Keterangan :
- Jika Skrip ini dijalankan maka akan menampilkan tulisan “Meong”
- Line 2 Kita membuat abstract class dengan nama hewan, untuk membuat abstract class anda diharuskan menambahkan perintah abstract didepan class.
- Line 3 Kita membuat abstract method dengan nama bersuara, untuk membuat abstract method anda diharuskan menambahkan perintah abstract didepan perintah function.
- Line 6 kita membuat class kucing yang menjadi class turunan hewan, karena didalam class hewan kita membuat abstract method dengan nama bersuara, maka pada class kucing yang merupakan turunan dari class hewan kita diharuskan untuk membuat method dengan nama yang sama yaitu method bersuara.
Fungsi dari abstract class dan abstract method
Setelah kita mempelajari mengenai abstract class dan abstract method, lalu timbul pertanyaan, kalau abstract class dan abstract method tidak dapat langsung diinstansiasi (dibuat object) tapi harus melalui class turunan, lalu sebenarnya apa fungsi dari abstract class dan abstract method ketika digunakan dalam menuliskan kode program ?
Abstract class dan abstract method ini digunakan untuk memastikan class turunannya akan membuat kerangka yang sama dengan class parentnya, seperti contoh diatas class parent (class hewan) mendeklarasikan abstract method (method bersuara), maka class kucing sebagai turunan class hewan diharuskan membuat method “bersuara”.
Perhatikan contoh skrip dibawah :
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php abstract class hewan{ abstract function bersuara(); } class kucing extends hewan{ } $kucing_budi = new kucing(); echo $kucing_budi->bersuara(); ?> |
Keterangan :
- Jika dijalankan akan menampilkan error
Fatal error: Class kucing contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (hewan::bersuara) in contoh_abstract_class_method.php on line 8 - Hal tersebut dikarenakan pada class kucing kita tidak mendeklarasikan method bersuara yang merupakan abstract method seperti yang ada pada struktur class hewan.
Jumlah Parameter pada abstract method harus sama dengan method di class turunan
Jumlah Parameter pada abstract method dan method pada class turunannya harus sama, perhatikan skrip dibawah ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php abstract class hewan{ abstract function bersuara(); abstract function jml_kaki($kaki); } class kucing extends hewan{ function bersuara() { return "Meong"; } function jml_kaki() { return "Jumlah Kaki Kucing ada 4"; } } $kucing_budi = new kucing(); echo $kucing_budi->bersuara(); ?> |
Keterangan :
- Jika skrip dijalankan maka akan menampilkan tulisan :
Fatal error: Declaration of kucing::jml_kaki() must be compatible with hewan::jml_kaki($kaki) in contoh_abstract_class_method.php on line 16 - Hal tersebut dikarenakan pada abstract method jml_kaki (Line 4) kita menambahkan parameter $kaki, sedangkan pada method jml_kaki class kucing tidak memiliki parameter
- Jadi bisa disimpulkan tidak hanya abstract method harus dideklarasikan ulang di class turunan, tetapi jumlah parameter yang ada pada method juga harus sama
Abstract Class tidak dapat langsung di instansiasi
Seperti yang telah dibahas diawal bahwa abstract class tidak dapat langsung diinstansiasi, anda diharuskan membuat class turunannya terlebih dahulu, nah untuk lebih memahami silahkan perhatikan skrip dibawah ini :
1 2 3 4 5 6 7 |
<?php abstract class hewan{ abstract function bersuara(); abstract function jml_kaki($kaki); } $kucing = new hewan(); ?> |
Keterangan :
- Jika dijalankan akan menampilkan error
Fatal error: Uncaught Error: Cannot instantiate abstract class hewan in contoh_abstract_class.php:6 Stack trace: #0 {main} thrown in contoh_abstract_class.php on line 6 - Hal tersebut dikarenakan kita membuat object dengan menggunakan class hewan (Line 6)
Abstract class dapat berisi method biasa, dan static method
Pada abstract class anda tidak hanya dapat membuat abstract method saja, tetapi anda juga dapat membuat method biasa, dan juga static method pembahasan static method dapat dibaca ditutorial kita sebelumnya memahami konsep static di OOP
Untuk contoh perhatikan skrip dibawah ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php abstract class hewan{ abstract function bersuara(); abstract function jml_kaki($kaki); function hewan_makan() { return "Hewan sedang makan"; } static function berjalan_maju() { return "Hewan Berjalan Maju"; } } echo hewan::berjalan_maju(); ?> |
Keterangan :
- Pada Line 5 kita membuat method dengan nama hewan_maju didalam abstract class
- Pada Line 9 kita membuat static method dengan nama berjalan_maju didalam abstract class, pada line 15 kita coba memanggil static method berjalan_maju, maka akan menampilkan tulisan “Hewan Berjalan Maju”, jadi dengan static method anda dapat langsung memanggil method tersebut meskipun method tersebut berada pada abstract class.
Jadi kurang lebih seperti itu teman – teman pembahasan mengenai Abstract Class dan Abstract Method yang digunakan untuk membuat kerangka pada parent class yang harus dideklarasikan ulang pada class turunannya, jika ada yang ingin didiskusikan silahkan di kolom komentar.. sekian dulu sampai jumpa di tutorial selanjutnya.
Informasinya sangat menarik.
Terima kasih gan.