Getter dan setter digunakan untuk melindungi data anda, terutama ketika membuat kelas.
Untuk setiap pemboleh ubah instance, kaedah getter mengembalikan nilainya sementara kaedah setter menetapkan atau mengemas kini nilainya. Dengan ini, getter dan setter juga masing-masing dikenal sebagai accessor dan mutator
Secara konvensyen, pemula dimulakan dengan kata "get" dan setter dengan kata "set", diikuti dengan nama pemboleh ubah. Dalam kedua kes tersebut huruf pertama nama pemboleh ubah ditulis dengan huruf besar:
public class Vehicle { private String color; // Getter public String getColor() { return color; } // Setter public void setColor(String c) { this.color = c; } }
Kaedah mendapatkan mengembalikan nilai atribut. Kaedah setter mengambil parameter dan menetapkannya ke atribut.
Setelah penanda dan pengatur telah ditentukan, kami menggunakannya dalam utama kami:
public static void main(String[] args) { Vehicle v1 = new Vehicle(); v1.setColor("Red"); System.out.println(v1.getColor()); } // Outputs "Red"
Pengambil dan pengatur membenarkan kawalan ke atas nilai. Anda boleh mengesahkan nilai yang diberikan dalam setter sebelum benar-benar menetapkan nilainya.
Mengapa menggunakan pemikat dan pengatur?
Getter dan setter membolehkan anda mengawal seberapa penting pemboleh ubah diakses dan dikemas kini dalam kod anda. Sebagai contoh, pertimbangkan kaedah setter ini:
public void setNumber(int number) { if (number 10) { throw new IllegalArgumentException(); } this.number = num; }
Dengan menggunakan setNumber
kaedah tersebut, anda dapat memastikan nilai number
selalu antara 1 dan 10. Ini jauh lebih baik daripada mengemas kini number
pemboleh ubah secara langsung:
obj.number = 13;
Sekiranya anda mengemas kini number
secara langsung, kemungkinan anda akan menyebabkan kesan sampingan yang tidak diingini di tempat lain dalam kod anda. Di sini, tetapan number
ke 13 melanggar kekangan 1 hingga 10 yang ingin kami tetapkan.
Membuat number
pemboleh ubah peribadi dan menggunakan setNumber
kaedah tersebut akan mengelakkan perkara ini berlaku.
Sebaliknya, satu-satunya cara untuk membaca nilai number
adalah dengan menggunakan kaedah mendapatkan:
public int getNumber() { return this.number; }