Search code examples
rubyaccess-specifier

Ruby class initialize (constructor) is private method or public method?


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


Solution

  • 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.