Classes in Ruby are first-class objects—each is an instance of class
Class. When a new class is created (typically using
class Name ... end), an object of type
Class is created and assigned to a global constant (
Name in this case). When
Name.new is called to create a new object, the
new method in
Class is run by default. This can be demonstrated by overriding
class Class alias oldNew new def new(*args) print "Creating a new ", self.name, "\n" oldNew(*args) end end class Name end n = Name.new
Creating a new Name
class Top def Top.inherited(sub) print "New subclass: ", sub, "\n" end end class Middle < Top end class Bottom < Middle end
New subclass: Middle New subclass: Bottom
Object) → aClass
Objectif no parameter is given).
initializemethod, passing it args.
Class.superclass → Module Object.superclass → nil
Extracted from the book "Programming Ruby - The Pragmatic Programmer's Guide"
Copyright © 2001 by Addison Wesley Longman, Inc. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http://www.opencontent.org/openpub/).
Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder.
Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.