Super Constructor di Java

Pada bahasan sebelumnya, kita gunakan kata kunci super untuk mengakses field dan method yang ada di class parent, selain itu super bisa juga digunakan untuk mengakses constructor. Tapi syarat untuk mengakses constructor class parentnya adalah kita harus mengaksesnya di dalam class child constructor. Jadi untuk mengakses contructor dari class parent kita buat constructor juga di class child. Jika di class parent tidak memiliki default constructor, maka class child wajib mengakses constructor class parent tersebut. Begitu juga sebaliknya, jika class parent memiliki constructor tanpa parameter maka di class child tidak harus mengakses constructor tersebut.

Constructor tanpa parameter

Pertama dibuat contoh untuk constructor tanpa parameter di class parent:

class Manager {

    //membuat constructor di class parent, tanpa parameter
    Manager(){
        
    }

    String nama;

    void sayHello(String nama){
        System.out.println("Hi "+ nama + ", nama saya Manager "+ this.nama);
    }
}

Lalu class childnya sebagai berikut:

class Karyawan extends Manager{
    //boleh tidak mengakses constructor dari class parent krn tnp parameter, NO ERROR
    void sayHello(String nama){
        /*method overriding, krn membuat method yang sama dengan yang ada
        di class parent, tapi kita tandai dengan mengganti kata manager (di class parent)
        dengan karyawan (di class child)
         */
        System.out.println("Hi "+ nama + ", nama saya karyawan "+ this.nama);
    }
}

Perhatikan bahwa tidak masalah jika kita tidak akses constructor class parentnya karena constructor tsb tanpa parameter.

 

Constructor dengan parameter

Berikutnya kita buat parameter di constructor class parentnya, maka wajib untuk mengaksesenya di class child. Perhatikan sintaks berikut ini:

class Manager {

    //membuat constructor di class parent, parameternya: nama
    Manager(String nama){
        this.nama = nama;
    }

    String nama;

    void sayHello(String nama){
        System.out.println("Hi "+ nama + ", nama saya Manager "+ this.nama);
    }
}

Lalu sintaks di class childnya sebagai berikut:

class Karyawan extends Manager{
    //harus akses constructor dr class parent, kita buat cosntructor Karyawan
    Karyawan(String nama){
        super(nama); //super berfungsi akses sonstructor di class parent
    }
    void sayHello(String nama){
        /*method overriding, krn membuat method yang sama dengan yang ada
        di class parent, tapi kita tandai dengan mengganti kata manager (di class parent)
        dengan karyawan (di class child)
         */
        System.out.println("Hi "+ nama + ", nama saya karyawan "+ this.nama);
    }
}

 

PREVIOUS: Super Keyword
NEXT: Polymorfisme

KE DAFTAR ISI

 

Leave a Reply

Your email address will not be published. Required fields are marked *