attr_accessor我想限制父類的方法在子類中訪問紅寶石限制在子類中
class Parent
attr_accessor :first_name, :last_name
def initialize(first_name, last_name)
@first_name, @last_name = first_name, last_name
end
def full_name
@first_name + " " + @last_name
end
end
class Son < Parent
attr_accessor :first_name
def initialize(parent, first_name)
@first_name = first_name
@last_name = parent.last_name
end
def full_name
@first_name + " " + @last_name
end
end
p = Parent.new("Bharat", "Chipli")
puts p.full_name
s = Son.new(p, "Harry")
s.last_name= "Smith"
puts s.full_name
這裏我得到兒子的全名「哈利·史密斯」,但我想「哈利Chipli」
我現在可以想到的一種解決方案是重新定義'last_name ='方法,使其不會執行任何操作或拋出異常。這種行爲也可以包裝在一個mixin – pjam