A question (and answer) for the Ruby FAQ: override and overload

Hi all,

before I go ahead and post my proposal directly to the FAQ site, I though I'd better share the proposal here...

I tend to add this question, as it regularly is touched here in discussions and questions:

What's with 'overloading' and 'overriding' methods in Ruby? And what's the difference between them anyway?

What do you think about it? There were lengthy threads about it, e.g. the one starting at ruby-talk 51156 with well over 150 postings...

Happy rubying

Stephan

Stephan Kämper wrote:

Hi all,

before I go ahead and post my proposal directly to the FAQ site, I though I'd better share the proposal here...

I tend to add this question, as it regularly is touched here in discussions and questions:

What's with 'overloading' and 'overriding' methods in Ruby? And what's the difference between them anyway?

Overloading usually means in C++ or Java:

   void my_method();
   void my_method(int arg);
   void my_method(int arg, char* x);

I.e. static polymorphism based on method signatures (the matching method is found at compile time, hence "static").
In Ruby, we don't have this kind of polymorhphism. Okay we can emulate this using:

   def my_method(*args, &block)
   end

But, I don't count this.

Overriding is probably another term for "overwriting" a method. That's simply if you redefine a method.

Regards,

   Michael

Michael Neumann wrote:

Stephan Kämper wrote:

before I go ahead and post my proposal directly to the FAQ site, I though I'd better share the proposal here...

I tend to add this question, as it regularly is touched here in discussions and questions:

What's with 'overloading' and 'overriding' methods in Ruby? And what's the difference between them anyway?

Overloading usually means in C++ or Java:

  void my_method();
  void my_method(int arg);
  void my_method(int arg, char* x);

I.e. static polymorphism based on method signatures (the matching method is found at compile time, hence "static").
In Ruby, we don't have this kind of polymorhphism. Okay we can emulate this using:

Yes, I know that. I just suggested to have this question (and answer) added to the FAQ. And I actually volunteer to do so. :slight_smile:

Happy rubying

Stephan