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 ballclass 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.
Tantangan
MudahMari 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 classVehicleyang berperan sebagai induk bagi semua kendaraan. Class ini harus memiliki property publik$branddan constructor yang menerima serta menetapkan brand. Sertakan methodstart()yang mengembalikan"[brand] is starting"dan methodstop()yang mengembalikan"[brand] is stopping".Motorcycle.php: Definisikan classMotorcycleyang mewarisiVehicle. Sertakan file Vehicle di bagian atas. Class Motorcycle tidak memerlukan constructor sendiri karena akan mewarisi constructor dari induknya. Tambahkan methodwheelie()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 objectMotorcycledengan brand ini. Cetak hasil pemanggilanstart(), laluwheelie(), lalustop(), 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()
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengenalan OOPclass vs objectKata Kunci $thismethodpropertyConstructor (__construct)Destructor (__destruct)Ringkasan: Kalkulator Sederhana4Pewarisan
Pewarisan DasarKata Kunci parent::Penimpaan methodKata Kunci finalClass AbstrakRingkasan: Hierarki Karyawan7Enkapsulasi
Public, Protected, PrivateModifier Akses secara MendalamGetter dan SetterPenyembunyian InformasiPromosi Constructor (8.0)Ulasan: Sistem Catatan Siswa2Namespace dan Autoloading
Pengenalan NamespaceKata Kunci useStandar Autoloading PSR-4Autoloader ComposerRingkasan: Proyek yang Terorganisasi5Interface dan Kontrak
Pengenalan InterfaceMengimplementasikan InterfaceImplementasi Beberapa InterfaceInterface vs Abstract ClassPetunjuk Tipe dengan InterfaceRekap: Kalkulator Bentuk8Magic Methods
Pengantar Magic Methods__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Cloning Object__serialize & __unserializeRingkasan: Koleksi Kustom11Sistem Tipe Data dan Penanganan Error
Deklarasi TipeTipe NullableTipe Union dan IntersectionClass ExceptionHierarki Exception KustomTry, Catch, FinallyRekap: Validator Form3Property dalam class
Property instance vs staticKonstanta dalam classMethod & property staticProperty private & protectedProperty readonly (PHP 8.1)Ulasan: Pengelola Rekening Bank6Polimorfisme
Meninjau Kembali Method OverridingPolimorfisme melalui AntarmukaPetunjuk Tipe dan Tipe UnionPengikatan Statis TertundaRangkuman: Pemroses PembayaranLatihan sendiri: Compiler PHP online