Petunjuk:
RUN
di dalam editor untuk menjalankan program.<?php
abstract class Kendaraan {
protected $merk;
protected $kecepatanMaksimal;
public function __construct($merk, $kecepatanMaksimal) {
$this->merk = $merk;
$this->kecepatanMaksimal = $kecepatanMaksimal;
}
abstract public function deskripsi();
}
class Mobil extends Kendaraan {
private $jumlahPintu;
public function __construct($merk, $kecepatanMaksimal, $jumlahPintu) {
parent::__construct($merk, $kecepatanMaksimal);
$this->jumlahPintu = $jumlahPintu;
}
public function deskripsi() {
return "Mobil merk {$this->merk} memiliki kecepatan maksimal {$this->kecepatanMaksimal} km/jam dan {$this->jumlahPintu} pintu.";
}
}
class Motor extends Kendaraan {
private $jenis;
public function __construct($merk, $kecepatanMaksimal, $jenis) {
parent::__construct($merk, $kecepatanMaksimal);
$this->jenis = $jenis;
}
public function deskripsi() {
return "Motor merk {$this->merk} berjenis {$this->jenis} dengan kecepatan maksimal {$this->kecepatanMaksimal} km/jam.";
}
}
// Penggunaan
$mobil = new Mobil("Toyota", 200, 4);
$motor = new Motor("Honda", 150, "Sport");
echo $mobil->deskripsi() . PHP_EOL;
echo $motor->deskripsi() . PHP_EOL;
?>
Kode di atas mendemonstrasikan penggunaan class abstrak Kendaraan
yang mendefinisikan struktur dasar dengan properti umum seperti $merk
dan $kecepatanMaksimal
, serta method abstrak deskripsi()
yang wajib diimplementasikan oleh class turunannya. Class Mobil
dan Motor
merupakan turunan dari Kendaraan
yang masing-masing menambahkan properti khusus, yaitu $jumlahPintu
pada Mobil
dan $jenis
pada Motor
, serta mengimplementasikan method deskripsi()
sesuai karakteristiknya. Penggunaan parent::__construct()
dalam konstruktor masing-masing turunan menunjukkan pemanfaatan pewarisan konstruktor dari class induk. Ketika objek Mobil
dan Motor
dibuat dan method deskripsi()
dipanggil, masing-masing akan mengembalikan informasi spesifik sesuai atribut yang dimilikinya.