Slide-P05-Inheritance.html

Konsep Inti Inheritance di Java

  1. extends: Kata kunci untuk mewarisi sifat class induk (superclass) ke class anak (subclass).
  2. super: Kata kunci untuk memanggil konstruktor atau method milik superclass.
  3. @Override: Menimpa implementasi method induk di class turunan.
  4. Keyword protected / private: Atribut private diwariskan tetapi tidak bisa diakses langsung, gunakan getter/setter atau modifier protected.

1. Sistem Penggajian Karyawan Dasar

Studi Kasus:

Sebuah perusahaan memiliki kelas induk Karyawan dengan atribut nama dan gajiPokok. Terdapat class turunan Manager yang mewarisi Karyawan dan memiliki atribut tambahan tunjangan. Buat program untuk menghitung total pendapatan manager.

Penjelasan Solusi:

Gunakan extends pada Manager, panggil konstruktor Karyawan menggunakan super(nama, gajiPokok), lalu buat method untuk menghitung total gaji (gajiPokok + tunjangan).

Java

// Superclass
class Karyawan{
    protected String nama;
    protected double gajiPokok;

    public Karyawan(String nama, double gajiPokok){
        this.nama = nama;
        this.gajiPokok = gajiPokok;
    }

    public void tampilkanInfo(){
        System.out.println("Nama: " + nama + ", Gaji Pokok: Rp" + gajiPokok);
    }
}

// Subclass
class Manager extends Karyawan{
    private double tunjangan;

    public Manager(String nama, double gajiPokok, double tunjangan){
        super(nama, gajiPokok); // Memanggil konstruktor superclass
        this.tunjangan = tunjangan;
    }

    public double hitungTotalGaji(){
        return gajiPokok + tunjangan;
    }

    @Override
    public void tampilkanInfo(){
        super.tampilkanInfo();
        System.out.println("Tunjangan: Rp" + tunjangan + " | Total: Rp" + hitungTotalGaji());
    }
}

2. Hierarki Kendaraan Bermotor

Studi Kasus:

Buat kelas induk Kendaraan (atribut merk dan tahunProduksi). Turunkan menjadi kelas Mobil (tambah atribut jumlahPintu) dan Motor (tambah atribut jenisStang).

Penjelasan Solusi:

Studi kasus ini menunjukkan pewarisan hierarkis (hierarchical inheritance), di mana satu superclass memiliki beberapa subclass.

class Kendaraan{
    protected String merk;
    protected int tahunProduksi;

    public Kendaraan(String merk, int tahunProduksi){
        this.merk = merk;
        this.tahunProduksi = tahunProduksi;
    }

    public void info(){
        System.out.print("[" + tahunProduksi + "] " + merk);
    }
}

class Mobil extends Kendaraan{
    private int jumlahPintu;

    public Mobil(String merk, int tahunProduksi, int jumlahPintu){
        super(merk, tahunProduksi);
        this.jumlahPintu = jumlahPintu;
    }

    @Override
    public void info(){
        super.info();
        System.out.println(" (Mobil, " + jumlahPintu + " pintu)");
    }
}

class Motor extends Kendaraan{
    private String jenisStang;

    public Motor(String merk, int tahunProduksi, String jenisStang){
        super(merk, tahunProduksi);
        this.jenisStang = jenisStang;
    }

    @Override
    public void info(){
        super.info();
        System.out.println(" (Motor, stang: " + jenisStang + ")");
    }
}

3. Pewarisan Bertingkat (Multilevel) Akun Bank