0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

クラスの継承

Last updated at Posted at 2017-05-01

##クラスの継承

  • すでに定義されているクラスを拡張して新しいクラスを作ることを継承という。
  • 継承によって新しく作られたクラスをサブクラスと呼ぶ
  • 継承の元になったクラスをスーパークラスと呼ぶ。

###継承によってできること

  • 既存の機能はそのままで新しい機能を追加する
  • 既存の機能を定義し直して同じ名前のメソッドに違う振る舞いをさせる
  • 既存の機能に処理を追加して拡張する

継承は同じような機能を持った複数のクラスを作る場合に有効なメカニズムである。
Rubyの全てのクラスはBasicObjectのサブクラスとなっている。
BasicObjectのサブクラスにはRubyの世界のオブジェクトとして必要最低限の機能が定義されている

以下は私が使用しているRubyのVersion 2.1.3における組み込みクラスの継承関係

スクリーンショット 2017-05-01 18.47.24.png

##インスタンスメソッドの確認

クラスオブジェクトに対して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__]
0
2
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?