Menu
CoddyTech

Pewarisan Dasar

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 21 dari 91.

Inheritance memungkinkan sebuah class memperoleh property dan method dari class lain. Alih-alih menulis ulang kode yang sama, kamu dapat membuat class dasar dengan fungsionalitas bersama dan membuat class lain mewarisinya.

Class yang diwarisi disebut parent class (atau base class), dan class yang mewarisi disebut child class. Kamu menggunakan kata kunci extends untuk menetapkan hubungan ini:

<?php
class Animal {
    public $name;
    
    public function __construct($name) {
        $this->name = $name;
    }
    
    public function speak() {
        return "$this->name makes a sound";
    }
}

class Dog extends Animal {
    public function fetch() {
        return "$this->name fetches the ball";
    }
}

$dog = new Dog("Buddy");
echo $dog->speak() . "\n";
echo $dog->fetch();

Output:

Buddy makes a sound
Buddy fetches the ball

class Dog secara otomatis memiliki akses ke property $name, constructor, dan method speak() dari Animal. class ini juga mendefinisikan method fetch() miliknya sendiri yang hanya dimiliki anjing.

Ini menciptakan hierarki yang jelas: setiap anjing adalah hewan, jadi masuk akal jika Dog mewarisi dari Animal. class anak dapat menggunakan semua hal dari class induk sambil menambahkan perilaku khususnya sendiri.

Poin penting: Inheritance mendorong penggunaan ulang kode dan membangun hubungan logis antarclass. Child class mewarisi semua anggota publik dan terlindungi dari parent, sehingga mengurangi duplikasi dan membuat kodemu lebih mudah dipelihara.

challenge icon

Tantangan

Mudah

Mari kita buat sistem hierarki kendaraan yang menunjukkan bagaimana inheritance memungkinkan class turunan berbagi fungsionalitas dari class induk sambil menambahkan perilaku khusus mereka sendiri.

Kamu akan menyusun kodemu dalam tiga file:

  • Vehicle.php: Definisikan class Vehicle yang berperan sebagai induk bagi semua kendaraan. Class ini harus memiliki property publik $brand dan constructor yang menerima serta menetapkan brand. Sertakan method start() yang mengembalikan "[brand] is starting" dan method stop() yang mengembalikan "[brand] is stopping".
  • Motorcycle.php: Definisikan class Motorcycle yang mewarisi Vehicle. Sertakan file Vehicle di bagian atas. Class Motorcycle tidak memerlukan constructor sendiri karena akan mewarisi constructor dari induknya. Tambahkan method wheelie() yang mengembalikan "[brand] is doing a wheelie!". Ini adalah perilaku yang unik bagi sepeda motor.
  • main.php: Sertakan file Motorcycle, yang sudah menyertakan Vehicle. Kamu akan menerima satu input: brand sepeda motor. Buat object Motorcycle dengan brand ini. Cetak hasil pemanggilan start(), lalu wheelie(), lalu stop(), masing-masing pada baris tersendiri.

Perhatikan bagaimana class Motorcycle secara otomatis mewarisi property $brand, constructor, serta method start() dan stop() dari Vehicle. Class turunan hanya perlu mendefinisikan hal yang membuatnya unik, dalam hal ini, kemampuan melakukan wheelie. Inilah kekuatan inheritance: tulis fungsionalitas umum satu kali di class induk, lalu biarkan class turunan menggunakannya kembali sambil menambahkan spesialisasi mereka sendiri.

Coba sendiri

<?php
// Sertakan class Motorcycle (yang sudah menyertakan Vehicle)
require_once 'Motorcycle.php';

// Baca input
$brand = trim(fgets(STDIN));

// TODO: Buat object Motorcycle dengan merek tersebut

// TODO: Cetak hasil start()

// TODO: Cetak hasil wheelie()

// TODO: Cetak hasil stop()
?>
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online