スーパークラスとサブクラス・クラス継承

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

オブジェクト指向プログラミングにより、クラスを定義するスタイルは、機能の拡張がしやすいという特徴を持ちます。
まず、スーパークラスには、共通の機能を定義しておき、継承によりサブクラスで固有の機能を定義する、という手法を用います。

スポンサーリンク

元となるクラスのことをスーパークラス(親クラス、基底クラス)と呼び、継承によりスーパークラスを受け継ぐクラスのことをサブクラス(子クラス、派生クラス)と呼びます。

Rubyの場合、一番最上位の大元となるクラスは、Objectクラスです。
すべてのクラスのスーパークラスとなっており、汎用的な基本機能が定義されています。

サブクラスとスーパクラスの関係を「is-a」の関係と言います。
「サブクラス is-a スーパークラス」と、サブクラスは、スーパークラスの一種であるという意味です。

str = "abcdef"
p str.instance_of?(Array)    # Arrayクラスか?
p str.instance_of?(String)    # Stringクラスか?
p str.instance_of?(Object)    # 継承をさかのぼれない
 
p str.is_a?(String)    # 継承をさかのぼる
p str.is_a?(Object)    # 継承をさかのぼる

instance_of?メソッドは、オブジェクトがどのクラスに属するかを調べます。
is_a?メソッドは、オブジェクトがどのクラスに属するか、継承関係をさかのぼって調べます。
実行結果。

false
true
false
true
true
スポンサーリンク
 
スポンサーリンク