Pengambilan dan pengaturan variabel dalam kelas mengacu pada pengambilan ("mendapatkan") atau mengubah ("pengaturan") isinya.
Pertimbangkan variabel members
kelas family
. Secara alami, variabel ini harus berupa bilangan bulat, karena sebuah keluarga tidak pernah bisa terdiri dari dua titik sesuatu orang.
Jadi Anda mungkin akan melanjutkan dengan mendefinisikan members
variabel seperti ini:
class family {
var members:Int
}
Ini, bagaimanapun, akan memberi orang yang menggunakan kelas ini kemungkinan untuk mengatur jumlah anggota keluarga menjadi sekitar 0 atau 1. Dan karena tidak ada yang namanya keluarga 1 atau 0, ini sangat disayangkan.
Di sinilah pengambil dan penyetel masuk. Dengan cara ini Anda dapat memutuskan sendiri bagaimana variabel dapat diubah dan nilai apa yang dapat mereka terima, serta memutuskan konten apa yang mereka kembalikan.
Kembali ke kelas keluarga kita, mari pastikan tidak ada yang dapat menyetel members
nilainya menjadi kurang dari 2:
class family {
var _members:Int = 2
var members:Int {
get {
return _members
}
set (newVal) {
if newVal >= 2 {
_members = newVal
} else {
println('error: cannot have family with less than 2 members')
}
}
}
}
Sekarang kita dapat mengakses members
variabel seperti sebelumnya, dengan mengetik instanceOfFamily.members
, dan berkat fungsi setter, kami juga dapat menetapkan nilai itu seperti sebelumnya, dengan mengetik, misalnya: instanceOfFamily.members = 3
. Apa yang berubah, bagaimanapun, adalah kenyataan bahwa kita tidak dapat mengatur variabel ini menjadi lebih kecil dari 2 lagi.
Perhatikan pengenalan _members
variabel, yang merupakan variabel aktual untuk menyimpan nilai yang kita tetapkan melalui members
fungsi penyetel. Yang asli members
sekarang telah menjadi properti yang dihitung, artinya itu hanya bertindak sebagai antarmuka untuk menangani variabel aktual kita.