From: "Jesús Gabriel y Galán" Date: 2013-07-25T00:25:23+09:00 Subject: Re: class <=> module On Wed, Jul 24, 2013 at 3:34 PM, Josh Cheek wrote: > 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 > 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. You cannot extend from arbitrary classes. If I want to create a class that extends String and Hash, for example, I can't. On the other hand I can extend any number of arbitrary modules. Jesus.