在Ruby中,封裝性是通過(guò)將數(shù)據(jù)和操作這些數(shù)據(jù)的方法組合在一起來(lái)實(shí)現(xiàn)的。實(shí)例變量是類的一個(gè)實(shí)例所擁有的數(shù)據(jù),它們通常用于存儲(chǔ)對(duì)象的狀態(tài)。要區(qū)分實(shí)例變量,我們可以使用以下方法:
實(shí)例變量的命名:實(shí)例變量通常以@
符號(hào)開頭,后面緊跟變量名。例如,@name
、@age
等。這種命名方式使得實(shí)例變量在類的實(shí)例中具有唯一性,因?yàn)槊總€(gè)實(shí)例都有自己的實(shí)例變量副本。
訪問(wèn)實(shí)例變量:要訪問(wèn)實(shí)例變量,我們需要使用實(shí)例方法(如getter和setter方法)。這些方法允許我們?cè)谕獠吭L問(wèn)和修改實(shí)例變量的值,同時(shí)保持封裝性。例如:
class Person
def initialize(name, age)
@name = name
@age = age
end
def get_name
@name
end
def set_name(name)
@name = name
end
def get_age
@age
end
def set_age(age)
@age = age
end
end
在這個(gè)例子中,我們使用get_name
、set_name
、get_age
和set_age
方法來(lái)訪問(wèn)和修改實(shí)例變量@name
和@age
。這樣可以確保外部代碼不能直接訪問(wèn)這些變量,從而保持了封裝性。
self
關(guān)鍵字來(lái)訪問(wèn)實(shí)例變量。例如:class Person
def initialize(name, age)
@name = name
@age = age
end
def introduce
puts "My name is #{self.get_name} and I am #{self.get_age} years old."
end
end
person = Person.new("Alice", 30)
person.introduce
在這個(gè)例子中,我們?cè)?code>introduce方法中使用self.get_name
和self.get_age
來(lái)訪問(wèn)實(shí)例變量。這樣可以確保我們使用的是實(shí)例變量,而不是局部變量或其他實(shí)例變量。