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")