Belajar PHP OOP Part 1.19 : 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 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;
}
}