0

我知道这可能是一个很长的镜头,但我想我会问:

由于 Ruby 不会执行initialize父类的方法,除非您显式调用super继承类的initialize方法(或者除非您不在继承类中重载它),所以我想知道是否有其他方法可以执行代码作为实例化继承类的新实例时的父上下文(可能是钩子)...

在实现B's 的初始化方法时,这是当前的行为:

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
4

2 回答 2

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
于 2013-04-29T19:52:35.277 回答
0

当然可以,只要super在子类中调用initialize方法即可

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
于 2013-04-29T20:05:55.483 回答