Home » PHP » OOP PHP : Interface atau Antarmuka

OOP PHP : Interface atau Antarmuka

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Section Artikel

PHP – Pengertian Interface

Interface dapat berfungsi untuk menentukan metode apa yang harus diterapkan kelas.

Interface/antarmuka memudahkan penggunaan berbagai kelas berbeda dengan cara yang sama. Ketika satu atau lebih kelas menggunakan antarmuka yang sama, itu disebut sebagai “polimorfisme”.

Antarmuka dideklarasikan dengan kata kunci interface:

Sintaks

<?php
interface InterfaceName {
  public function someMethod1();
  public function someMethod2($name, $color);
  public function someMethod3() : string;
}
?>

PHP – Interfacevs. Kelas Abstrak

Interface mirip dengan kelas abstrak. Perbedaan antara interface dan kelas abstrak adalah:

  • Interface tidak boleh memiliki properti, sedangkan kelas abstrak bisa
  • Semua metode inteface harus publik, sedangkan metode kelas abstrak bersifat publik atau protected
  • Semua metode dalam sebuah interface bersifat abstrak, sehingga tidak dapat diimplementasikan dalam kode dan kata kunci abstrak tidak diperlukan
  • Kelas dapat mengimplementasikan interface sambil mewarisi dari kelas lain pada waktu yang sama

PHP – Menggunakan Interface

Untuk mengimplementasikan sebuah interface, sebuah kelas harus menggunakan kata kunci implement.

Kelas yang mengimplementasikan antarmuka harus mengimplementasikan semua metode antarmuka.

Contoh :

<?php
interface Animal {
  public function makeSound();
}

class Cat implements Animal {
  public function makeSound() {
    echo "Meow";
  }
}

$animal = new Cat();
$animal->makeSound();
?>
  // Output : Meow

Dari contoh di atas, misalkan kita ingin membuat perangkat lunak yang mengelola sekelompok hewan. Ada tindakan yang dapat dilakukan semua hewan, tetapi setiap hewan melakukannya dengan caranya sendiri.

Dengan menggunakan interface , kita dapat menulis beberapa kode yang dapat bekerja untuk semua hewan meskipun setiap hewan berperilaku berbeda:

Contoh :

<?php
// definisi Interface 
interface Animal {
  public function makeSound();
}

// definisi Class 
class Cat implements Animal {
  public function makeSound() {
    echo " Meow ";
  }
}

class Anjing implements Animal {
  public function makeSound() {
    echo " Bark ";
  }
}

class Tikus implements Animal {
  public function makeSound() {
    echo " Squeak ";
  }
}

// Buat list binatang
$cat = new Kucing();
$dog = new Anjing();
$mouse = new Tikus();
$animals = array($cat, $dog, $mouse);

// Beri tahu hewan untuk bersuara
foreach($animals as $animal) {
  $animal->makeSound();
}
?>
  /*Output
  Meow Bark Squeak
  */

Penjelasan Kode

Kucing, Anjing, dan Tikus adalah semua kelas yang mengimplementasikan antarmuka Hewan, yang berarti semuanya dapat mengeluarkan suara menggunakan metode makeSound(). Karena itu, kita dapat menelusuri semua hewan dan memberi tahu mereka untuk bersuara meskipun kita tidak tahu jenis hewan apa masing-masing.

Karena interface tidak memberi tahu kelas cara mengimplementasikan metode, setiap hewan dapat mengeluarkan suara dengan caranya sendiri.

You may also like