Praktikum PBO D 2026/Week 3: Inheritance/Inheritance

Inheritance

Inheritance

inheritance.jpg

Inheritance itu mekanisme di mana satu class (subclass/child class) bisa mewarisi field dan method dari class lain (superclass/parent class). Tujuannya buat reuse code dan bikin hubungan "is-a" antar class.

class Superclass {
    // field dan method
}

class Subclass extends Superclass {
    // field dan method tambahan
}

Superclass dan Subclass

  • Superclass (parent): class yang diwarisi
  • Subclass (child): class yang mewarisi, ditandai keyword extends
class Hewan {
    String nama;
    void makan() {
        System.out.println(nama + " sedang makan");
    }
}

class Kucing extends Hewan {
    void mengeong() {
        System.out.println(nama + " mengeong");
    }
}
Kucing k = new Kucing();
k.nama = "Milo";
k.makan();     // dari Hewan
k.mengeong();  // dari Kucing

Keyword super

Dipakai buat akses field, method, atau constructor dari superclass.

class Hewan {
    Hewan() {
        System.out.println("Hewan dibuat");
    }
}

class Kucing extends Hewan {
    Kucing() {
        super(); // panggil constructor Hewan
        System.out.println("Kucing dibuat");
    }
}

Method Overriding

Subclass bisa nulis ulang method dari superclass dengan signature yang sama. Ditandai anotasi @Override (opsional tapi disarankan).

class Hewan {
    void bersuara() {
        System.out.println("Hewan bersuara");
    }
}

class Kucing extends Hewan {
    @Override
    void bersuara() {
        System.out.println("Meong");
    }
}

Single Inheritance

Java cuma support single inheritance buat class (satu subclass cuma bisa extends satu superclass). Kalau butuh multiple inheritance, pakai interface.

Access Modifier dan Inheritance

  • public dan protected: diwarisi ke subclass
  • private: tidak diwarisi, gak bisa diakses langsung dari subclass
  • Constructor tidak diwariskan, tapi bisa dipanggil pakai super()

Keyword final

  • final class: gak bisa di-extends
  • final method: gak bisa di-override
final class Hewan { }

Instance Of

instanceof adalah operator biner yang digunakan untuk menguji apakah suatu objek merupakan tipe tertentu. Hasil dari operasi ini adalah true atau false. Operator ini juga dikenal sebagai operator perbandingan tipe karena membandingkan instance dengan suatu tipe.

Sebelum melakukan casting terhadap objek yang belum diketahui tipenya, pemeriksaan menggunakan instanceof harus selalu dilakukan. Hal ini membantu menghindari ClassCastException saat program dijalankan (runtime).

Sintaks dasar operator instanceof adalah:

(object) instanceof (type)

Sekarang mari kita lihat contoh dasar penggunaan operator instanceof. Pertama, kita akan membuat sebuah kelas Round:

public class Round {
    // detail implementasi
}

Selanjutnya, kita akan membuat kelas Ring yang mewarisi (extends) kelas Round:

public class Ring extends Round {
    // detail implementasi
}

Kita dapat menggunakan instanceof untuk memeriksa apakah sebuah instance dari Ring merupakan tipe Round:

@Test
void givenWhenInstanceIsCorrect_thenReturnTrue() {
    Ring ring = new Ring();
    assertTrue(ring instanceof Round);
}

inheritance2.jpg