我有以下代碼:`super(argument)`中的`argument`做了什麼?
class Bicycle
attr_reader :gears, :wheels, :seats
def initialize(gears = 1, wheels = 2)
@gears = gears
@wheels = wheels
@seats = 1
end
end
b = Bicycle.new
b.gears # => 1
b.wheels # => 2
b.seats # => 1
class Tandem < Bicycle
def initialize(gears)
super(gears)
@seats = 2
end
end
t = Tandem.new(2)
t.gears # => 2
t.wheels # => 2
t.seats # => 2
,當我刪除super
,t.gears
和t.wheels
返回nil
預期。
但是,無論我運行的是super(gears)
還是super
,代碼都會返回相同的結果。 super(argument)
中的argument
是做什麼的?當我輸入super(argument)
或super
時,會發生什麼情況?
參考上述代碼:http://rubylearning.com/satishtalim/ruby_overriding_methods.html – Iggy
'super(argument)'用給定'argument'調用相應的父類'方法。在這個特定的情況下,它調用父類'initialize(argument)'。 'super'沒有參數,它調用沒有參數的父類方法。 – lurker
這是否意味着如果父類具有'arg1,arg2,arg3',並且在子類class super(arg1,arg2)上''''arg3'將會在子類中返回'nil'? – Iggy