On Jan 27, 2005, at 11:18 AM, Mystifier wrote: > The current situation in Ruby with method calls is > > class A > def meth(arg1) > end > end > > class B < A > def meth(arg1,arg2) > end > end > > a = A.new > b = B.new > > b.meth(1,2) is fine but a.meth(1,2) . This is fine but what one > assumes is > that when a method is overridden, you wish to override the > implementation. > In that case, this is a problem. If you wish to override the implementation, then you should do so: class A def meth(arg1) end end #...later... class A def meth(arg1,arg2) end end It would not make sense to affect/change a parent class that you inherit from. Consider: class Animal def eat gobble_ravenously() end end class Person < Animal def eat use_fork_and_knife() end end If the 'redefinition' of #eat by the Person class affected the Animal class, all animals would suddenly be using cutlery. Am I misunderstanding you?