【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のメソッドが使用できるようになります。例えるならば、クラスがたい焼き機械の型 インスタンスがたい焼きそのものというイメージです。