Ruby クラスメソッド、インスタンスメソッド、モジュールについて

Ruby クラスメソッド、インスタンスメソッド、モジュールについて

下記の書籍を参考に記事を作成しました。
プログラミング言語 Ruby

 

大前提

Rubyはすべての値がオブジェクトのように振る舞います。

 

クラス(Class)

クラスができることは、主に下記の4つだと思います。
①他のクラスをサブクラスにできる
②スーパークラスのメソッドを継承できる
③スーパークラスのメソッドをオーバーライドできる
④モジュールのメソッドを継承できる(include)

 

クラスメソッドとインスタンスメソッドの違い

【インスタンス】
オブジェクトのことを指しています。

クラスメソッドとインスタンスメソッド

下記の記事を参考に書きました。
Rails初心者から中級者になったと感じたきっかけ

クラスメソッドは、クラス全体で使えるメソッドです。
インスタンスメソッドは、クラスのインスタンスから呼び出されるメソッドです。

うーん、具体的には下記のような感じです。

クラスメソッドは、クラス全体で使えるのに対して、
インスタンスメソッドは、インスタンスを作ってから(new)、クラスのインスタンスからメソッドを呼び出しています。

 

モジュール(module)

クラスのように、メソッド、定数のグループに名前をつけたものを言います。
しかしながらモジュールは、インスタンス化をすることもできなければ、サブクラス化もできないです。

じゃあ何に使うかというと、名前空間としての役割とミックスインとして使われます。
ミックスインとは、クラスにモジュールを取り込むことを言います。
その場合、includeを使用します。

また有名なミックスインモジュールとしては、EnumerableComparableがあります。
Enumerableは、each文などのイテレータを使うことができるようになり、
Comparableは、比較演算子を使うことができるようになります。

 

参考にした記事

Rubyを始めたけど今ひとつRubyのオブジェクト指向というものが掴めないという人、ここに来て見て触って!
Rails初心者から中級者になったと感じたきっかけ