スーパークラスとサブクラス・クラス継承
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
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
スポンサーリンク
>> 次の記事 : Rubyのクラス定義・initialize(コンストラクタ)
<< 前の記事 : classメソッド・オブジェクトが属するクラスを調べる
- - 関連記事 -
- 特異クラスによるクラスメソッド定義・class << self ~ end
- モジュールの使い方
- クラス定義でメソッドへのアクセス制限・public, private, protected
- クラス継承
- クラス拡張
- クラス変数・クラスメソッド
- アクセスメソッド(アクセサ)をattr_reader, attr_writer, attr_accessorで定義
- アクセスメソッド(アクセサ)
- Rubyのクラス定義・initialize(コンストラクタ)
- classメソッド・オブジェクトが属するクラスを調べる
- private, protected アクセス指定の違い
- オブジェクトのコピーを作る
- Rubyのinitializeメソッドの継承
スポンサーリンク