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.