圧倒的備忘録

忘却は罪である。

【Ruby入門】classのnewとinitializeについて

classとは

変数などのデータとそれを処理するメソッドをまとめたものを指します。

Rubyでclassを使うためには、以下のようにコード中でclassを定義する必要があります。

class クラス名
    # クラスのデータを初期化する
    def initialize(引数)
      処理1
      処理2
      処理3
  ・・・
    end
end

defとは

メソッドを定義するものです。

initialize

クラスのデータを初期化するものです。複数のinitializeは定義できません。

クラスの定義をしましたが、そのままではclassをコード中で使えません。 classのnewメソッドによって、classをインスタンス化する必要があります。

インスタンス化とは

classの定義をもとに新たな変数を作成することです。

# Studentクラスを定義する
class Student
    # Studentクラスのname,ageデータを初期化する
    def initialize(name,age)
        @name = name
        @age = age
    end
    def introduce
       puts "私は#{@name}です。#{@age}歳です。"
    end
end
# Studentクラスのインスタンスを作成し、変数化する。
yamada = Student.new('やまだたろう',21)
tanaka = Student.new('たなかゆうき',18)

# yamada,tanakaインスタンスを出力する。
print yamada.introduce
print tanaka.introduce

実行結果:

 私はやまだたろうです。21歳です。
 私はたなかゆうきです。18歳です。

Student.newメソッドを使って、Studentクラスをインスタンス化してます。その後、変数yamada,tanakaに対してintroduceメソッドを実行するように命令してます。その結果、Studentクラスのintroduceメソッドが実行されます。このように、classは定義したままでは使用できず、newメソッドによりインスタンス化して初めて、classのメソッドが使用できるようになります。例えるならば、クラスがたい焼き機械の型 インスタンスがたい焼きそのものというイメージです。