クラスとは::Ruby

8.1.1 クラスとインスタンス

クラスは,オブジェクトの種類を表すもの。
Rubyのオブジェクトは,例外なく何らかのクラスに属している。

新しいオブジェクトを生成するには,一般的には各クラスのnewメソッドを使う。
### 新しい配列オブジェクトを生成する。
ary = Array.new

オブジェクトがどのクラスに属しているのかを調べるには,classメソッドを使う。
### オブジェクトのクラスを調べる
ary = []
str = "hoge"
p ary.class # => Array
p str.class # => String

オブジェクトがあるクラスのインスタンスかどうかを判断するには,
instance_of?メソッドを使う。
### オブジェクトのクラスを判定する
ary = []
p ary.instance_of?(Array) # => true
p ary.instance_of?(String) # => false

8.1.2 継承

既に定義されているクラスを拡張して新しいクラスを作ること。

継承によって新しく作られたクラスをサブクラス,
継承のもとになったクラスをスーパークラスという。

継承によって以下のようなことができる。
  • 既存の機能はそのままで,新しい機能を追加する
  • 既存の機能を定義し直して,同じ名前のメソッドに違う振る舞いをさせる
  • 既存の機能に処理を追加して拡張する

Rubyのすべてのクラスは,Objectクラスのサブクラス。
(Ruby 1.9では,ObjectクラスのスーパークラスにBasicObjectがある。)

サブクラスとスーパークラスの関係を(Rubyに限らず)「is-aの関係にある」という。
is_a?メソッドで継承関係を遡ってクラスに属するかどうかを調べることができる。
### クラスに属するかどうかを調べる
str = "This is a String."
p str.is_a?(String) # true
p str.is_a?(Object) # true


最終更新:2011年07月29日 11:55