Constructor Overloading di Java

Kita dapat membuat lebih dari satu constructor asalkan constructor satu dengan yang lain memiliki tipe data pada parameternya berbeda. Kita buat class bernama DataMhs, lalu ketikkan sintaks di bawah ini:

public class DataMhs {
    //deklarasi field
    String nama;
    String kelamin;

    //buat constructor DataMhs tanpa parameter
    DataMhs(){

    }

    //buat constructor DataMhs dgn parameter paramNama
    DataMhs(String paramNama){
        nama = paramNama;

    }

    //buat method infoLengkap
    void infoLengkap(String alamat){
        System.out.println("Berikut adalah data mahasiswa:");
        System.out.println("Nama: " + nama);
        System.out.println("Alamat: " + alamat);
    }
}

Selanjutnya kita buat class bernama DataMhsApp, ketikkan sintaks berikut ini:

public class DataMhsApp {
    public static void main(String[] args) {
        //buat objek mahasiswa1 dari constructor DataMhs()
        var mahasiswa1 = new DataMhs();
        //buat objek mahasiswa2 dari constructor DataMhs(String paramNama)
        var mahasiswa2 = new DataMhs("Pauzan");

        //menerapkan field nama di objek mahasiswa1
        mahasiswa1.nama = "Pauzan";
        System.out.println(mahasiswa1.nama);

        //menarpkan method infoLengkap ke objek mahasiswa2
        mahasiswa2.infoLengkap("Indramayu");

    }
}

Jika kita run maka hasilnya adalah:

Pauzan //menerapkan field nama di objek mahasiswa1
Berikut adalah data mahasiswa: //menarpkan method infoLengkap ke objek mahasiswa2
Nama: Pauzan
Alamat: Indramayu

 

Memanggil constructor lain

Pada constructor kita dapat memanggil constructor lain, caranya adalah sama dengan memanggil method tapi ditambahkan kata kunci this. Perhatikan sintaks berikut ini:

public class DataMhs {
    //deklarasi field
    String nama;
    String alamat;

    //buat constructor DataMhs dgn parameter paramNama dan paramAlamat
    DataMhs(String paramNama, String paramAlamat){
        nama = paramNama;
        alamat = paramAlamat;
    }

    //buat constructor DataMhs dgn parameter paramNama
    DataMhs(String paramNama){
        this(paramNama, null); //this disini memanggil constructor DataMhs(String paramNama, String paramAlamat)
    }

    //buat constructor DataMhs tanpa parameter
    DataMhs(){
        this(null); //this disini memanggil constructor DataMhs(String paramNama)
    }

    //buat method infoLengkap
    void infoLengkap(String alamat){
        System.out.println("Berikut adalah data mahasiswa:");
        System.out.println("Nama: " + nama);
        System.out.println("Alamat: " + alamat);
    }
}

Kita gunakan sintaks ini di class DataMhsApp:

public class DataMhsApp {
    public static void main(String[] args) {
        //buat objek mahasiswa1 dari constructor DataMhs()
        var mahasiswa1 = new DataMhs();
        //buat objek mahasiswa2 dari constructor DataMhs(String paramNama)
        var mahasiswa2 = new DataMhs("Pauzan");

        //menerapkan field nama di objek mahasiswa1
        mahasiswa1.nama = "Pauzan";
        System.out.println(mahasiswa1.nama);

        //menarpkan method infoLengkap ke objek mahasiswa2
        mahasiswa2.infoLengkap("Indramayu");

    }
}

Jika kita run maka hasilnya akan sama dengan kasus sebelumnya:

Pauzan
Berikut adalah data mahasiswa:
Nama: Pauzan
Alamat: Indramayu

 

PREVIOUS: Constructor
NEXT: Variabel shadowing

KE DAFTAR ISI

Leave a Reply

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