Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Mari 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 property String brand, constructor yang menerima brand, dan method start() yang mencetak [brand] engine starting...
    • Class Motorcycle yang memperluas Vehicle. Class ini harus memiliki property tambahan int cc (kapasitas mesin), constructor yang menerima brand dan cc (meneruskan brand ke induk menggunakan super), serta method sendiri wheelie() yang mencetak [brand] is doing a wheelie!
  • main.dart: Impor file kendaraanmu dan tunjukkan pewarisan dalam praktik:
    • Buat Vehicle dengan brand 'Toyota'
    • Panggil method start()-nya
    • Buat Motorcycle dengan brand 'Harley' dan cc 1200
    • Panggil method start() milik motorcycle (diwarisi dari Vehicle)
    • Panggil method wheelie() milik motorcycle (didefinisikan di Motorcycle)
    • Cetak Motorcycle engine: [cc]cc untuk menunjukkan property milik class anak

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: 1200cc

Coba 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
}
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 Dart online