ruby/クラスとインスタンス
最近勉強ばっかりで書いてなかったので書こうかなと。
今日はrubyのクラスとインスタンスについて書こうかなと思うよ。
クラスとは
とある種類のオブジェクトにおける、共通の属性とメソッドをまとめて定義しておく型のようなもの。
ある属性のクラスからインスタンスを作成し、そのインスタンスで処理を行います。
これによってインスタンスの一貫性が生まれます。
さて全くわからん!なんのことだよって感じなんで、次はインスタンスについて調べます。
インスタンスとは
クラスに基づいて生まれたオブジェクトのことをインスタンスと言います。
とにかくクラスが先。クラスからインスタンスが生まれます。
なんて言われてもやっぱりわからんよね・・。
ということでいつも通りとりあえず書いてみます。
こんな感じ。
ちなみに実行結果ははこんな感じ。
一個一個何してるかというと、まずこれ
Fruitsというクラスを定義しています。
同時にこのクラス内でクラス変数@@fruitsを使うと、"果物"がかえってくるようにしてます。クラス変数は、fruitsクラスの内部であればどこでも使用可能です。
ちなみにクラスには継承というものもあるので、継承先でもクラス変数が使えます。
ちなみにインスタンス変数はクラスのインスタンスにおいて使用することができます。
self.(メソッド名)でクラスメソッドを定義できます。
クラスメソッドはクラス変数にアクセスするときに用いることが多いそうです。
例えば、外部ファイルからデータを取得してインスタンスを作成するときとか・・・らしい。
ここでは実行することで"甘いよ"って言います。果物のくせに生意気ですね。
最後にまたインスタンスメソッド。インスタンスメソッドでは、別のインスタンスメソッドで使われたインスンタンス変数を使うことができます。
ここでは"私はメロンで色は緑です。"と自己紹介します。果物のくせに生意気ですね。
これらは書いただけでは実行されず、下記の通りに記載することで初めて実行されます。
furits = Fruits.newにより、fruitsというインスタンスが作成されます。
まずこのコマンドによってインスタンスを作成する必要があります。
その後は、
インスタンスメソッドであれば(インスタンス名).(インスタンスメソッド名)と書くことによって
クラスメソッドであれば(クラス名).(クラスメソッド名)と書くことで実行されます。
途中で出てきたinitializeメソッドは、Fruits.newと同時に実行されるので省略されます。
こんな感じか。
噛み砕くためにクラスという単語とインスタンスという単語を努めて使わないという初心は開始数行で消えました。