Secara default di Java constuktor akan dibuatkan otomatis ketika kita tidak mendefinisikan construktor di class yang kita buat. Yang mungkin jadi pertanyaan, apa itu construktor?

Construktor yaitu sama halnya dengan method atau function tetapi namanya sama dengan nama class contohnya disini saya punya class dengan nama Deposito seperti berikut:

1
2
3
4
5
6
7
8
9
package tdi.training.java.core;

public class Deposito {

    // this is constructor
    public Deposito(){
        // do something here!
    }
}

Nah sebenarnya, biasanya di materi sebelumnya kita tidak mendifinisikan method constructor karena memang belum diperlukan dan juga tidak ada action apapun. Constructor biasanya digunakan untuk melakukan inisialisasi suatu nilai karena sebenarnya selain method main(), contructor yang pertama kali di eksekusi dengan perintah seperti new Deposito() artinya kita memanggil method constructor tanpa kita sadari.

Sebenanya kita tidak menggunakan contruktor juga tidak masalah karena, coba anda perhatikan di method Deposito() tidak ada satupun perintah yang di definisikan didalam method tersebut. jadi kita cukup seperti berikut:

1
2
3
4
5
package tdi.training.java.core;

public class Deposito {

}

Mengapa method yang kita buat Deposito() dihapus, ya karena di Java udah dibuat secara otomatis tanpa di definisikan seperti perintah yang diatas. tetapi jika misalnya kita mau ketika Object deposito dipanggil dan diinisialisasi maka saya mau mengisi variable yang saya definisikan kemudian diisi nilanya ketika di inisialisasi object maka dengan menggunakan constructor ini adalah cara yang tepat contohnya seperti berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package tdi.training.java.core;

import java.math.BigDecimal;

public class Deposito {

    private boolean active;
    private BigDecimal saldo;

    // this is constructor
    public Deposito(){
        this.active = false;
        this.saldo = new BigDecimal(0);
    }
}

Jadi sekarang ketika saya panggil object deposito setelah di inisialisasi maka variable active dan saldo otomatis nilainya ada tidak null lagi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package tdi.training.java.core;

import java.math.BigDecimal;

public class MainApplication{

    public static void main(String[] args){
        Deposito dep = new Deposito();
        System.out.println(
            "status deposito " + 
            dep.active + 
            " sedangkan saldonya " + 
            dep.saldo
        );
    }
}

Selain itu juga, di constructor bisa sebagai setter method dengan manambahkan parameter seperti berikut contohnya:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package tdi.training.java.core;

import java.math.BigDecimal;

public class Deposito {

    private boolean active;
    private BigDecimal saldo;

    // this is constructor
    public Deposito(){
        this.active = false;
        this.saldo = new BigDecimal(0);
    }

    public Deposito(boolean isActive, BigDecimal saldo){
        this.active = isActive;
        this.saldo = saldo;
    }
}

Nah sekarang jadi cara panggilnya menggunakan parameter seperti berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package tdi.training.java.core;

import java.math.BigDecimal;

public class MainApplication{

    public static void main(String[] args){
        Deposito dep = new Deposito(true, new BigDecimal(10000));
        System.out.println(
            "status deposito " + 
            dep.active + 
            " sedangkan saldonya " + 
            dep.saldo
        );
    }
}

Nah jadi sekarang status depositonya bukan bernilai false lagi ya tapi bernilai true sedangkan nilai saldonya sekarang yaitu 10000.00