Sama seperti abstract class, Interface juga digunakan untuk memastikan child class memiliki method seperti pada parent classnya.
Untuk membuat suatu interface, keywordnya interface.
Untuk mengimplementasikan interface, kita menggunakan keyword implements.
Semua method yang ditulis di interface harus berupa public.
Di interface tidak boleh memiliki property.
Sama seperti abstract class, interface juga tidak bisa menginisiasi object. Harus melalui child classnya.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php interface Mobil{ public function setMerk($merk); public function getMerk(); } class BMW implements Mobil{ private $merk; public function setMerk($merk){ $this->merk = $merk; } public function getMerk(){ return $this->merk; } } $bmw = new BMW(); $bmw->setMerk('BMW'); echo $bmw->getMerk(); ?> |
Interface Mobil di atas memiliki dua method yaitu setMerk() dan getMerk(), sehingga child Classnya yaitu BMW harus juga mempunyai dua method tersebut.
Implementasi Lebih Dari Satu Interface
Pada PHP, sebuah child class tidak bisa mengextends beberapa class sekaligus. Sehingga solusinya adalah menggunakan interface.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?php interface Mobil{ public function setMerk($merk); public function getMerk(); } interface KendaraanBeroda{ public function setRoda($roda); public function getRoda(); } class BMW implements Mobil, KendaraanBeroda{ private $merk; private $jumlahRoda; public function setMerk($merk){ $this->merk = $merk; } public function getMerk(){ return $this->merk; } public function setRoda($roda){ $this->jumlahRoda = $roda; } public function getRoda(){ return $this->jumlahRoda; } } $bmw = new BMW(); $bmw->setMerk('BMW'); $bmw->setRoda(4); echo $bmw->getMerk().' dengan Roda '.$bmw->getRoda(); ?> |
Child Class BMW merupakan turunan dari interface Mobil dan Kendaraan Beroda, dan memiliki method yang berasal dari interface-interfacenya.
Gunakan abstract class kalau ada shared-property untuk child classnya. Kalau tidak ada, gunakan interface saja.