There is no way to overload a method in Ruby. That's in part due to Ruby
being dynamically typed, and of "methods" being treated as "messages".

Most of the time, you wouldn't need to overload a method because of the
ducktyping nature of Ruby. Your method's argument can exhibit the same
services no matter what their type is.
If you want varying parameters for a method, you can use the splat operator
(*).


module Fox
>  class FXRegion
>    # Construct new empty region
>    def initialize; end
>
>    # Construct new region copied from region _r_ (another FXRegion
> instance).
>    def initialize(r); end
>
>    # Construct new region from rectangle _rect_ (an FXRectangle
> instance)
>    def initialize(rect); end
>
>    #
>    # Construct rectangle region, where (_x_, _y_) are the coordinates
> of the
>    # upper left-hand corner and (_w_, _h_) are its width and height.
>    #
>    def initialize(x, y, w, h); end
>
>    #
>    # Construct polygon region from an array of points. Here, _points_
> is
>    # an array of FXPoint instances.
>    #
>    def initialize(points, winding=false); end


In the example you provided, the methods are simply *overridden. *The only
effective initialize method will be the last one.