From: sto.mar@... Date: 2013-07-25T02:54:42+09:00 Subject: Re: class <=> module Am 24.07.2013 15:34, schrieb Josh Cheek: > On Wed, Jul 24, 2013 at 7:51 AM, > wrote: > > Am 24.07.2013 14 :35, schrieb Josh Cheek: > > On Wed, Jul 24, 2013 at 1:10 AM, > >> wrote: > > > And you forgot to mention: classes can inherit only from a > single other > class (a conscious decision by Matz), but you can include > many modules. > Seems difficult to unify that in one concept. > > > That seems inaccurate to me: > > C1 = Class.new Object > C2 = Class.new C1 > C3 = Class.new C2 > > > I was alluding to multiple inheritance, meaning a class > inherits _directly_ from more than one superclass. > > > I still don't understand. I showed that you can inherit from multiple > classes like you can inherit from multiple modules. Yes there are other No, they behave differently! The modules are *not* superclasses of the classes they are mixed into: C1 = Class.new Object C2 = Class.new C1 C3 = Class.new C2 C3.superclass # => C2 C3.superclass.superclass # => C1 M1 = Module.new M2 = Module.new C4 = Class.new { include M2, M1 } C4.superclass # => Object > differences, but this does not seem to be one of them. Perhaps you think > that modules have some sort of fancier inheritance? If so, this is not > the case. When you include a module, an anonymous class with the > module's methods gets inserted as the superclass. --