Rubyのinitializeメソッドの呼び出し制限について

initializeメソッドの呼び出し制限

クラス定義の中にあるdef式はデフォルトではpublicになる。
だたし、initializeメソッドは自動的にprivateに設定される。

class C
  def initialize
    p "initialize"
  end
end
C.new.initialize
// => private method `initialize' called for #<C:0x00007fa0751586b0> (NoMethodError)

initializeメソッドを明示的にpublicにすることは可能。

class C
  def initialize
    p "initialize"
  end
  public :initialize
end

C.new.initialize
// => "initialize"
// => "initialize"

参考

Rubyリファレンスマニュアルには次のように書かれている。

initialize という名前のメソッドは自動的に private に設定されます。

instance method Object#initialize (Ruby 2.5.0)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください