Cara menggunakan php abstract static 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 :

<?php

abstractclasshewan{

abstractfunctionbersuara();

}

classkucingextendshewan{

functionbersuara()

{

return'Meong';

}

}

$kucing_budi=newkucing();

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 :

<?php

abstractclasshewan{

abstractfunctionbersuara();

}

classkucingextendshewan{

}

$kucing_budi =newkucing();

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

abstractclasshewan{

abstractfunctionbersuara();

abstractfunctionjml_kaki($kaki);

}

classkucingextendshewan{

functionbersuara()

{

return"Meong";

}

functionjml_kaki()

{

return"Jumlah Kaki Kucing ada 4";

}

}

$kucing_budi=newkucing();

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 :

<?php

abstractclasshewan{

abstractfunctionbersuara();

abstractfunctionjml_kaki($kaki);

}

$kucing=newhewan();

?>

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 :

<?php

abstractclasshewan{

abstractfunctionbersuara();

abstractfunctionjml_kaki($kaki);

functionhewan_makan()

{

return"Hewan sedang makan";

}

staticfunctionberjalan_maju()

{

return"Hewan Berjalan Maju";

}

}

echohewan::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.