Class (part 3)

Kita kembali semula ke class Kucing, dan kita akan membuat sesuatu yang dipanggil sebagai constructor overloading dan method overloading. Kita juga akan melihat pengenalan kepada keyword this.

Constructor overloading

Constructor overloading bermaksud kita letakkan lebih daripada satu constructor untuk class tersebut, dengan syarat parameter mereka berlainan. Contohnya,

package kucing;

public class Kucing {
    private String nama;
    private int umur;

    public Kucing() {
        nama = "Tiada nama";
        umur = 0;
    }

    public Kucing(String n, int u) {
        nama = n;
        umur = u;
    }

    ...

Jadi, kita boleh tentukan constructor mana yang hendak digunakan semasa create object:

package kucing;

public class Main {
    public static void main(String[] args) {
        Kucing kucingSaya = new Kucing();
        Kucing kucingKawanSaya = new Kucing("Comel", 10);

        System.out.println(kucingSaya.getNama());
        System.out.println(kucingKawanSaya.getNama());
    }
}

Method overloading

Method overloading juga sama, kita boleh meletakkan lebih daripada satu method yang mempunyai nama yang sama, dengan syarat parameter mereka berlainan. Contohnya method setNama(),

    ...

    public void setNama() {
        nama = "Tiada nama";
    }

    public void setNama(String n) {
        nama = n;
    }

    ...

dan kita boleh memilih untuk menggunakan method yang mana berdasarkan parameter yang kita letakkan:

package kucing;

public class Main {
    public static void main(String[] args) {
        Kucing kucingSaya = new Kucing();

        kucingSaya.setNama("Comel");
        System.out.println(kucingSaya.getNama());

        kucingSaya.setNama();
        System.out.println(kucingSaya.getNama());
    }
}

Keyword ‘this

Keyword this digunakan untuk merujuk ‘object ini’. Antara kegunaannya adalah untuk menentukan variable yang mana kita mahu gunakan. Contohnya apabila nama parameter adalah sama dengan nama field, seperti berikut:

    ...

    private String nama;
    private int umur;

    public Kucing() {
        nama = "Tiada nama";
        umur = 0;
    }

    public Kucing(String nama, int umur) {
        this.nama = nama;
        this.umur = umur;
    }

    ...
}

Jadi, this.nama = nama bermaksud untuk ‘nama object ini’ kita masukkan data daripada parameter ‘nama’.

Satu lagi kegunaannya adalah untuk menghantar data dari parameter ke constructor yang lain, contohnya:

package kucing;

public class Kucing {

    private String nama;
    private int umur;

    public Kucing() {
        this("Tiada nama", 0);  // akan hantar ke Kucing(String nama, int umur)
    }

    public Kucing(String nama, int umur) {
        this.nama = nama;
        this.umur = umur;
    }

    ...
}

Oleh itu, kita boleh tulis semula class Kucing menggunakan keyword this, seperti berikut:

package kucing;

public class Kucing {
    private String nama;
    private int umur;

    public Kucing() {
        this("Tiada nama", 0);
    }

    public Kucing(String nama, int umur) {
        this.nama = nama;
        this.umur = umur;
    }

    public String getNama() {
        return nama;
    }

    public int getUmur() {
        return umur;
    }

    public void setNama() {
        nama = "Tiada nama";
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public void setUmur(int umur) {
        if (umur < 0) {
            System.out.println("Error, umur tidak boleh negatif!");
        } else {
            this.umur = umur;
        }
    }

    public void mengiau() {
        System.out.println("Meow");
    }

    public void minum() {
        System.out.println("Slrrp, slrrp");
    }
}

Website ini menggunakan cookie yang dikendalikan oleh pihak ketiga. Anda boleh membaca dengan lebih lanjut di sini. Dengan menggunakan website ini, anda bersetuju dengan penggunaan cookie tersebut.

Setuju