实例变量我知道,实例变量都无关,与遗传:继承和红宝石
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