Việc lấy và thiết lập các biến trong các lớp đề cập đến việc truy xuất ("nhận") hoặc thay đổi ("thiết lập") nội dung của chúng.
Hãy xem xét một biến members
của một lớp family
. Đương nhiên, biến này cần phải là một số nguyên, vì một gia đình không bao giờ có thể bao gồm hai người một điểm.
Vì vậy, bạn có thể sẽ tiếp tục bằng cách xác định members
biến như sau:
class family {
var members:Int
}
Tuy nhiên, điều này sẽ cung cấp cho những người sử dụng lớp này khả năng đặt số lượng thành viên trong gia đình là 0 hoặc 1. Và vì không có thứ gì gọi là họ 1 hoặc 0, điều này khá đáng tiếc.
Đây là nơi các getters và setters đi vào. Bằng cách này, bạn có thể tự quyết định cách các biến có thể được thay đổi và giá trị nào mà chúng có thể nhận được cũng như quyết định nội dung mà chúng trả về.
Quay trở lại lớp gia đình của chúng ta, hãy đảm bảo rằng không ai có thể đặt members
giá trị thành bất kỳ giá trị nào nhỏ hơn 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')
}
}
}
}
Bây giờ chúng ta có thể truy cập vào members
biến như trước, bằng cách gõ instanceOfFamily.members
, và nhờ vào chức năng setter, chúng tôi cũng có thể thiết lập giá trị của nó như trước, bằng cách gõ, ví dụ: instanceOfFamily.members = 3
. Tuy nhiên, điều đã thay đổi là chúng ta không thể đặt biến này thành bất kỳ giá trị nào nhỏ hơn 2 nữa.
Lưu ý phần giới thiệu của _members
biến, là biến thực để lưu giá trị mà chúng ta đặt thông qua members
hàm setter. Bản gốc members
bây giờ đã trở thành một thuộc tính được tính toán, có nghĩa là nó chỉ hoạt động như một giao diện để xử lý biến thực tế của chúng ta.