Belajar PHP OOP Part 1.19 : Interface

interface

  • Sebelumnya kita sudah tahu bahwa abstract class bisa kita gunakan sebagai kontrak untuk class child nya
  • Namun sebenarnya yang lebih tepat untuk kontrak adalah interface
  • Jangan salah sangka bahwa interface disini bukanlah user interface
  • Interface mirip seperti abstract class, yang membedakan adalah di interface, semua method otomatis abstract, tidak memiliki block
  • Di interface kita tidak boleh memiliki properties, kita hanya boleh memiliki constant
  • Untuk mewariskan interface, kita tidak menggunakan kata kunci extends, melainkan implements
  • Dan berbeda dengal class, kita bisa implementasi lebih dari satu interface

<?php

namespace Data;

interface Car {
function drive(): void;

function getTire(): int;
}

class Avanza implements Car {
public function drive(): void
{
echo "Drive Avanza" . PHP_EOL;
}

public function getTire(): int
{
return 4;
}
}
<?php

require_once "data/Car.php";
use Data\{Avanza};

$car = new Avanza();
$car->drive();
interface output

Interface Inheritance

  • Sebelumnya kita sudah tahu kalo di PHP, child class hanya bisa punya 1 class parent
  • Namun berbeda dengan interface, sebuah child class bisa implement lebih dari 1 interface
  • Bahkan interface pun bisa implement interface lain, bisa lebih dari 1. Namun jika interface ingin mewarisi interface lain, kita menggunakan kata kunci extends, bukan implements
<?php

namespace Data;

interface HasBrand
{
function getBrand(): string;
}

interface IsMaintenance
{
function isMaintenance(): bool;
}

interface Car extends HasBrand {
function drive(): void;

function getTire(): int;
}

class Avanza implements Car, IsMaintenance {
public function drive(): void
{
echo "Drive Avanza" . PHP_EOL;
}

public function getTire(): int
{
return 4;
}

public function getBrand(): string
{
return "Toyota";
}

public function isMaintenance(): bool
{
return false;
}
}

Next Post Previous Post
No Comment
Add Comment
comment url