實例變量我知道,實例變量都無關,與遺傳:繼承和紅寶石
class A
def initialize
@x = 2
end
end
class B < A
def puts_x
puts @x
end
def x=(value)
@x = value
end
end
b = B.new
b.puts_x
b.x=3
b.puts_x
此輸出:
2
3
這裏,類從A
類B
繼承和@x
在類B
與繼承無關。
但輸出是2
。我想了解它。
的「Ruby Inheritance」頁說:
由於實例變量無關與繼承,它 遵循由子類使用的實例變量不能「影子」 實例在超變量類。如果一個子類使用一個 實例變量與其一個 祖先使用的變量具有相同的名稱,它將覆蓋其祖先變量的值。
我也想要這個的任何例子。
在類'B',您創建了一個setter方法'X =(值)',因爲你已經繼承類'A'了'initialize'方法和最初設定的實例變量'@x = 2',當你調用'bx = 3'時,你調用setter方法來改變那個實例變量的值。所以現在'@x = 3'就是那個'b'的實例。 –
*「據說......」* - 請包括一個來源。 – Stefan
你可以參考http://rubylearning.com/satishtalim/ruby_inheritance.html – Messi