11 August 2013

BELAJAR JAVA 36 : Public, Private, this (Siapa diorang nih?)

Kalau perasan kat tutorial mula-mula dulu, kita ada guna keyword private untuk instance variable.

private ni keyword yang kita boleh guna untuk kawal penggunaan variable tu.

Contoh kalau kita nak tukar variable hour dalam ni:

public class Trial {
        private int jam;
        private int minit;
        private int saat;
        public void setMasa(int jam, int minit, int saat) {
           this.jam = jam;
           this.minit = minit;
           this.saat= saat;
        }
}

dari class yang lain, contoh macam ni:

public class Test {
    public static void main(String[] args) {
     
        Trial test = new Trial();
        test.jam = 0;   
         
    }
}


Kalau pakai Eclipse, nak compile pun tak boleh, dah bagitau awal-awal dah "The field is not visible".

Kalau la kita nak jugak tukar variable jam tu, kita boleh tukar dari private jadi public, macam ni:

public class Trial {
        public int jam;
        private int minit;
        private int saat;
        public void setMasa(int jam, int minit, int saat) {
           this.jam = jam;
           this.minit = minit;
           this.saat= saat;
        }
}
Maksudnya kat sini, bila private hanya method yang ada dalam class tu sahaja yang boleh guna, kalau dari class lain tak boleh.

Jadi, kenapa nak guna private?

Senang citer contoh bila kita boleh tukar-tukar variable  macam tu je, macam mana nak tau nombor untuk variables tu valid ke tak kan?Sebab tu lah pakai private .. supaya method tertentu sahaja boleh pakai class tersebut.

Ok, itu serba sedikit pasal public dengan private.

Sekarang kita tengok keyword this pulak.

Contoh kalau kita nak buat macam ni:

public class Trial {
        public int jam;
        private int minit;
        private int saat;
        public void setMasa(int jam, int minit, int saat) {
           this.jam = jam;
           this.minit = minit;
           this.saat= saat;
        }
}
Nama instance variable dengan nama parameter tu sama.

Salah memang tak salah, tapi dia buat benda yang bukan kita nak la.

Bila kita tulis
jam = jam;

maksudnya kita masukkan hour ke dalam hour tu balik, bukannya hour yang kat luar tu.

Jadi, dia tak buat apa-apa la.

Kalau pakai Eclipse, kita boleh nampak dia highlight yang mana.

Kalau kita nak masukkan nombor dari parameter tu ke variable hour yang kat luar tu, kita guna keyword this, macam ni:
this.hour = hour;

Jadi, this.hour ni lah yang merujuk hour kat luar tu, maksudnya this class punya hour, bukan hour yang dalam method. So, takyah declare nama berbeza.. :)

Kalau pakai Eclipse boleh nampak dia highlight yang mana.
Tapi bukan nak promote ECLIPSE KEPLER   laa.. ok.. sampai sini je tutor hari ni.. sayonara.. :)


No comments: