Pewarisan dan Polimorfisme · Pelajaran 5 dari 10

Pewarisan dengan extends

9 menit baca · BelajarCode

Pewarisan (inheritance) memungkinkan sebuah kelas mewarisi atribut dan metode kelas lain. Kelas induk disebut superclass, kelas turunan disebut subclass. Hubungannya adalah "adalah sejenis": mobil adalah sejenis kendaraan.

Java
1class Kendaraan {2    protected String merek;3    protected int tahun;45    Kendaraan(String merek, int tahun) {6        this.merek = merek;7        this.tahun = tahun;8    }910    String info() {11        return merek + " (" + tahun + ")";12    }1314    int umur(int tahunSekarang) {15        return tahunSekarang - tahun;16    }17}1819class Mobil extends Kendaraan {20    private int kursi;2122    Mobil(String merek, int tahun, int kursi) {23        super(merek, tahun);24        this.kursi = kursi;25    }2627    int getKursi() {28        return kursi;29    }30}3132class Motor extends Kendaraan {33    Motor(String merek, int tahun) {34        super(merek, tahun);35    }3637    String bunyi() {38        return "Brum brum!";39    }40}4142public class Main {43    public static void main(String[] args) {44        Mobil m = new Mobil("Mobil Keluarga", 2019, 7);45        Motor t = new Motor("Motor Bebek", 2022);46        System.out.println(m.info() + ", " + m.getKursi() + " kursi, umur " + m.umur(2026) + " tahun");47        System.out.println(t.info() + ", " + t.bunyi());48    }49}
Keluaran
Mobil Keluarga (2019), 7 kursi, umur 7 tahun
Motor Bebek (2022), Brum brum!
  • extends membuat Mobil dan Motor mewarisi merek, tahun, info(), dan umur() dari Kendaraan.
  • super(merek, tahun) memanggil konstruktor superclass. Panggilan ini harus menjadi baris pertama konstruktor subclass.
  • protected membuat atribut bisa diakses oleh subclass.
  • Subclass boleh menambah atribut dan metode sendiri, seperti kursi dan bunyi().

Satu induk saja

Di Java, sebuah kelas hanya boleh extends satu kelas. Semua kelas, langsung maupun tidak langsung, adalah turunan dari kelas Object. Untuk mendapatkan kemampuan dari banyak sumber, Java memakai interface, yang dibahas dua pelajaran lagi.

Jangan memaksakan pewarisan

Pakai pewarisan hanya jika hubungan "adalah sejenis" benar-benar berlaku. Mobil punya mesin, bukan sejenis mesin, jadi Mobil sebaiknya menyimpan objek Mesin sebagai atribut. Cara ini disebut komposisi, dan sering lebih fleksibel daripada pewarisan.

Cek pemahaman

Pada kode di atas, kenapa objek Motor bisa memanggil metode info() padahal kelas Motor tidak menulisnya?

Latihan

Pegawai dan dosen

Buat kelas Pegawai dengan nama dan gaji pokok, serta metode gajiBulanan() yang mengembalikan gaji pokok. Buat subclass Dosen yang menambah atribut jumlah SKS mengajar dan metode honorMengajar() sebesar Rp150.000 per SKS.

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Java online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi