我知道这可能是一个很长的镜头,但我想我会问:
由于Ruby不执行父类的initialize
方法,除非您在继承类的super
方法中显式调用initialize
(或者除非在继承中不重载它)我想知道在实例化一个继承类的新实例时是否有其他方法可以执行代码作为父上下文的一部分(可能是一个钩子)...
在实现B
的初始化方法时,这是当前的行为:
class A
def initialize
puts "Inside A's constructor"
end
end
class B < A
def initialize
puts "Inside B's constructor"
end
end
A.new
B.new
# Output
# => Inside A's constructor
# => Inside B's constructor
我想知道输出是否可能以某种方式:
A.new
# => Inside A's constructor
B.new
# => Inside A's constructor
# => Inside B's constructor
答案 0 :(得分:0)
class A
def initialize
puts "Inside A's constructor"
end
end
class B < A
def initialize
super
puts "Inside B's constructor"
end
end
A.new
B.new
的输出:强> 的
Inside A's constructor
Inside A's constructor
Inside B's constructor
答案 1 :(得分:0)
当然,您可以在子类initialize方法
中调用super
class A
def initialize
puts "Inside A's constructor"
end
end
class B < A
def initialize
super
puts "Inside B's constructor"
end
end
A.new
B.new
<强>输出:强>
Inside A's constructor
Inside A's constructor
Inside B's constructor