initializeメソッドの使い方

インスタンスメソッドの中で initialize と言う名前が付けられたメソッドは特別なメソッドで、インスタンスが生成されるときに自動的に initialize メソッドが呼び出されます。ここでは Ruby で initialize メソッドの使い方について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 16 日更新)

initializeメソッドを定義する

initialize メソッドは次のように定義します。

class クラス名

  def initialize()
    処理
  end

end

initialize メソッドはインスタンス

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()
サンプルコード

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

# encoding: UTF-8

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

  def dispName()
    puts(@name)
  end
end

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

car1.dispName()
car2.dispName()

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

initializeメソッド

-- --

Ruby で initialize メソッドの使い方について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。