【Ruby】クラスとインスタンスにについて要点解説

RubyRuby

クラス変数

クラス変数とはそのクラス内で定義された変数であり、@@から始まる変数となります。

クラス変数はクラスメソッド、インスタンスメソッド、また子クラスから読み書きできる変数です。

クラス変数はクラス側で変数が既に入っているので、インスタンス生成前に変数に値が入っています。

インスタンス変数とは

インスタンス変数とはそのクラスのインスタンスで使用できる変数です。@から始まる変数となります。

インスタンス変数は同じインスタンス内部で共有する変数となります。インスタンス変数はインスタンス生成時に値が入ります。

今回では、インスタンス変数nameとpriceです。initializeメソッドの中で定義します。initializeメソッドはnewメソッドの引数を受け取ることができます。

名前と価格をnewメソッドから受け取ってインスタンス変数に代入しましょう。

selfとは

Rubyのselfとは、オブジェクトそのものを指しています。

今回では、Fruitsクラスがあり、そのクラス内のメソッドで、selfを参照している状況で、オブジェクトを作成し、そのメソッドを実行するとFruitsのオブジェクトであることが分かります。

self をメソッドに付与する事で、インスタンスメソッドではなく、クラスメソッドとして定義する事もできます。

例題

こちらのコードを使い下記の結果を出力すしてください。

答え

3行目〜

initializeメソッドは、newでインスタンスを生成した際、実行されるメソッドです
initializeメソッドの中で定義したインスタンス変数に、引数で受け取った、”ゆうき”,”クラスとインスタンスについて”,”class and instance”の値をそれぞれのインスタンス変数へ代入します。

9行目〜

インスタンス変数の値を返すためのインスタンスメソッドをそれぞれ定義します。
記述しなければ、25行目をarticle.authorではなく@authorと書いても”ゆうき”とは出力されません。

23行目〜

Articleクラスのインスタンスを生成し、変数articleに代入します。
その際に実引数として”ゆうき”,”クラスとインスタンスについて”,”class and instance”の値を、仮引数author、 title、contentにそれぞれ渡します。

25行目〜

9行目〜で定義したインスタンスメソッドを呼び出します。
インスタンスメソッドはインスタンス名.メソッド名で呼び出します。

コメント

タイトルとURLをコピーしました