initializeメソッド

広告

インスタンスメソッドの中で「initialize」と言う名前が付けられたメソッドは特殊なメソッドです。このメソッドをクラス内に記述した場合にはオブジェクトが作成される時に自動的に呼び出されます。

class クラス名

  def initialize()
    処理
  end

end

※Javaなどで言う所のコンストラクタと同じです。

「initialize」メソッドを使うことでオブジェクトを作成時に必ず実行したい処理をメソッドを呼び出すことなく実行することが出来ます。例えば次の例では「initialize」メソッドの中でインスタンス変数を初期化しています。

class Car
  def initialize()
    @name = "未定義"
  end
end

car = Car.new()

これは「initialize」メソッドを使わずに通常のインスタンスメソッドを使って次のように記述した場合と同じです。

class Car
  def init()
    @name = "未定義"
  end
end

car = Car.new()
car.init()

「initialize」メソッドを使うことで必ず実行すべき初期化処理などを行わせる事ができるようになります。

「initialize」メソッドに引数を指定する

「initialize」メソッドには引数を指定することが出来ます。

class クラス名

  def initialize(変数1, 変数2, ...)
    処理
  end

end

他のメソッドと同じく「initialize」メソッドも呼びだす時に引数を指定して呼び出すことでメソッドに値を渡す事ができますが、「initialize」メソッドは自動的に呼び出されるメソッドですので「initialize」メソッドに渡す値はクラスメソッドの「new」メソッドの引数に指定します。

class Car
  def initialize(carname)
    @name = carname
  end
end

car = Car.new("civic")

また他のメソッドと同じく引数に初期値を設定することも可能です。

class Car
  def initialize(carname="未定義")
    @name = carname
  end
end

car1 = Car.new("civic")
car2 = Car.new()

サンプルプログラム

では実際に試してみます。

ClassTest5.rb

class Car
  def initialize(carname="未定義")
    @name = carname
  end

  def dispName()
    print(@name, "¥n")
  end
end

car1 = Car.new("civic")
car2 = Car.new()

car1.dispName()
car2.dispName()

上記を実行すると次のように表示されます。

initializeメソッド

( Written by Tatsuo Ikura )