Pewarisan Dasar
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 36 dari 110.
Pewarisan memungkinkan sebuah class memperoleh property dan method dari class lain. Daripada menulis ulang kode yang sama, kamu membuat class baru yang dibangun berdasarkan class yang sudah ada. Class asli disebut induk (atau superclass), dan class baru disebut anak (atau subclass).
Di Dart, kamu menggunakan kata kunci extends untuk mewarisi dari class induk:
class Animal {
String name;
Animal(this.name);
void eat() {
print('$name is eating');
}
}
class Dog extends Animal {
Dog(String name) : super(name);
void bark() {
print('$name says woof!');
}
}
void main() {
var dog = Dog('Buddy');
dog.eat(); // Diwarisi dari Animal
dog.bark(); // Didefinisikan di Dog
}Class Dog secara otomatis memiliki akses ke property name dan method eat() dari Animal, serta method bark() miliknya sendiri. Ini membentuk hubungan "is-a", yaitu Dog adalah Animal.
Child class dapat menambahkan property dan method baru, tetapi mewarisi semua yang bersifat public dari parent. Perhatikan bahwa member private (yang menggunakan _) tidak dapat diakses secara langsung di subclass dari library yang berbeda, meskipun member tersebut tetap ada di object yang diwarisi.
Tantangan
MudahMari bangun sistem kendaraan yang menunjukkan cara pewarisan memungkinkan class anak menggunakan kembali dan memperluas fungsi class induk. Kamu akan membuat class induk untuk kendaraan umum dan class anak untuk jenis kendaraan tertentu.
Kamu akan menyusun kodemu ke dalam dua file:
vehicle.dart: Definisikan class-mu di sini:- Class
Vehicle(induk) dengan propertyString brand, constructor yang menerima brand, dan methodstart()yang mencetak[brand] engine starting... - Class
Motorcycleyang memperluasVehicle. Class ini harus memiliki property tambahanint cc(kapasitas mesin), constructor yang menerima brand dan cc (meneruskan brand ke induk menggunakansuper), serta method sendiriwheelie()yang mencetak[brand] is doing a wheelie!
- Class
main.dart: Impor file kendaraanmu dan tunjukkan pewarisan dalam praktik:- Buat
Vehicledengan brand'Toyota' - Panggil method
start()-nya - Buat
Motorcycledengan brand'Harley'dan cc1200 - Panggil method
start()milik motorcycle (diwarisi dari Vehicle) - Panggil method
wheelie()milik motorcycle (didefinisikan di Motorcycle) - Cetak
Motorcycle engine: [cc]ccuntuk menunjukkan property milik class anak
- Buat
Perhatikan cara class Motorcycle otomatis mendapatkan akses ke property brand dan method start() dari Vehicle, sekaligus memiliki property uniknya sendiri cc dan method wheelie(). Inilah kekuatan pewarisan: membangun berdasarkan kode yang sudah ada.
Output yang diharapkan:
Toyota engine starting...
Harley engine starting...
Harley is doing a wheelie!
Motorcycle engine: 1200ccCoba sendiri
import 'vehicle.dart';
void main() {
// TODO: Buat Vehicle dengan merek 'Toyota'
// TODO: Panggil method start() milik vehicle
// TODO: Buat Motorcycle dengan merek 'Harley' dan cc 1200
// TODO: Panggil method start() milik motorcycle (diwarisi dari Vehicle)
// TODO: Panggil method wheelie() milik motorcycle
// TODO: Cetak 'Motorcycle engine: [cc]cc' menggunakan property cc milik motorcycle
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online