SORA.GetOutput()

備忘録と捌け口とシェアと何か。

Ruby 継承とinitialize

当然っちゃ当然なんだけど、継承して作ったクラスは継承元のinitializeも呼んでいる。


以下の様にベースのクラスUserとUserを継承したSuperUserというものを作ってみる。

class User 

    @@count =0 # Class var

    def initialize(name)
        @name = name # instance var
        @@count += 1
    end
end
class SuperUser < User 

    def say
        "Derived from User class!!!"
    end
end

そして、以下のようにインスタンス化。この場合、Userのtomを作った時にinitialize内でcountが+1され、SuperUser(User継承)のbobを作った時に再度initialize内でcountが+1される。よって、以下コード実行後にはUserのクラス変数@@countには「2」が入っている。

tom = User.new("Tom")
bob = SuperUser.new("Bob")