アマグラミング

プログラミング初心者が勉強したことを復習とメモがてら書いているだけです。

(86)classメソッド、instance_of?メソッド、is_a?メソッド

オブジェクトがどのクラスに属しているのかを調べるには

classメソッドを用います

 

str = "ababa"

num = 5

ary = []

p str.class

p num.class

p ary.class

 

実行すると

f:id:tiroru17:20170704085622p:plain

 

オブジェクトがあるクラスのインスタンスかどうかの真偽を知るには

instance_of?メソッドを使います。

 

str = "ababa"

p str.instance_of?(String)

p str.instance_of?(Array)

 

実行すると

f:id:tiroru17:20170704092813p:plain

こんな感じ

 

 Rubyの全てのクラスはBasicObjectクラスのサブクラスで

ここでは必要最低限の定義がされている。

 

でも普通に使う分には最低限すぎるので

Objectクラスにいろいろ定義されていて、

Array(配列)、String(文字列)とかのクラスが定義されている。

 

そんな構造で、

スーパークラスとサブクラスの関係はis_aの関係にある

と言う。

例えばStringクラスのスーパークラスであるObjectクラスの

関係はis_aの関係。

 

is_a?メソッドって言うのがありまして

 

a = "あ"

p a.is_a?(String)

p a.is_a?(Object)

 

実行すると

f:id:tiroru17:20170706151855p:plain

 

こうなる。

継承関係をさかのぼってクラスの親子関係がわかるってわけです。