yuuki blog

プログラミング をアプトプットしています。

インスタンスの生成(自分用メモ)

  class Fruits
    @@sum = 0  # クラス変数@@sumの定義

    def self.get_sum   # クラスメソッドget_sumの定義
      puts "合計の価格は#{@@sum}円です"
    end

    def initialize(name, price)
      @name = name       # インスタンスの生成 newメゾットで生成引数としてname,priceを渡します 
@price = price
@@sum += price   # @@sumに価格を足し合わせる
end
end
apple = Fruits.new("リンゴ", 120) # インスタンスの生成
orange = Fruits.new("オレンジ", 200)
strawberry = Fruits.new("イチゴ", 60)

Fruits.get_sum # get_sumの呼び出し
            # 合計価格の@@sumが表示されます

クラス変数

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

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

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

インスタンス変数とは

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

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

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

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

selfとは

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

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

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