##クラスの継承
- すでに定義されているクラスを拡張して新しいクラスを作ることを継承という。
- 継承によって新しく作られたクラスをサブクラスと呼ぶ
- 継承の元になったクラスをスーパークラスと呼ぶ。
###継承によってできること
- 既存の機能はそのままで新しい機能を追加する
- 既存の機能を定義し直して同じ名前のメソッドに違う振る舞いをさせる
- 既存の機能に処理を追加して拡張する
継承は同じような機能を持った複数のクラスを作る場合に有効なメカニズムである。
Rubyの全てのクラスはBasicObjectのサブクラスとなっている。
BasicObjectのサブクラスにはRubyの世界のオブジェクトとして必要最低限の機能が定義されている
以下は私が使用しているRubyのVersion 2.1.3における組み込みクラスの継承関係
##インスタンスメソッドの確認
クラスオブジェクトに対してinstance_methodsメソッドを呼ぶとクラスに定義された
インスタンスメソッド名の一覧をシンボルの配列の形式で返してくれる。
以下はObjectクラスとBasicObjectクラスのインスタンスメソッド確認例
Objectクラスのインスタンスメソッド一覧
irb
>> Object.instance_methods
=> [:nil?, :===, :=~, :!~, :eql?, :hash, :<=>, :class, :singleton_class, :clone, :dup, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze, :frozen?, :to_s, :inspect, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :extend, :display, :method, :public_method, :singleton_method, :define_singleton_method, :object_id, :to_enum, :enum_for, :==, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__, :__id__]
BasicObjectクラスのインスタンスメソッド一覧
irb
>> BasicObject.instance_methods
=> [:==, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__, :__id__]