self.newのすげかえ

クラスメソッドnewの最後にsuperじゃなく、他のオブジェクトを作ってみました。動きますね。

class Rosemary
    def hello
        print "Hello, Rosemary!\n"
    end
end

class Rubyco
    def self.new
        print "new is overridden.\n"
        Rosemary.new
    end
    def hello
        print "Hello Rubyco!\n"
    end
end

a = Rubyco.new
p a                 # => #<Rosemary:0x2946b68>
a.hello             # => Hello, Rosemary!