這怎麼能工作?訪問父類實例變量
class A
attr_accessor :name
def initialize params
@name = params[:name]
@collection << B.new
end
end
class B < A
def initialize
@my_name = lookup_something(<parent.name>)
end
end
基本上,我需要一個值從父類的子類中查找使用,但我不想明確地傳遞,如果有一個更好的辦法。父類的實例var在子類中完全無法訪問?或者這僅僅是糟糕的層次結構設計?
很好的答案,除了一件事:改變子類的構造函數的簽名是完全正確的。這是因爲當你實例化時,你總是知道你正在處理的是什麼課。因此,構造函數不需要考慮多元模型。 (顯着的例外:您可能希望對構造,當你在做的元編程,或者你建立某種神奇的工廠相同/相似的界面。) – Franz 2016-08-03 09:45:51
你是一種權利有關的構造特徵 - 它們是O.K.改變。這並不意味着擁有完全不同的基類和子類構造函數_behaviour_是很好的。 – averell 2016-08-23 09:53:24