11

Is initialize method (constructor) private or public in ruby?

0

2 Answers 2

16

Let's see:

class Test
  def initialize; end
end

p Test.new.private_methods.sort.include?(:initialize)

This prints true, so initialize is a private method. This makes sense, it is only called by the new class method if the object is created. If we want, we can do something like this:

class Test
  def initialize
    @counter = 0
  end

  def reset!
    initialize
  end
end

Misusing the constructor like this could however lead to problems if it does more than simple variable initialization.

Sign up to request clarification or add additional context in comments.

1 Comment

You can also call initialize of an object by obj.send(:initialize).
4

The initialize method in a class automatically becomes Private.

You can check it using:

puts ClassName.private_methods.sort

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.