Metaclass - Alternative Definition

Alternative Definition

The classical definition of a metaclass as a class whose instances are classes poses several problems:

  • All classes without instances would pass the definition, so that they become metaclasses by vacuous truth.
  • If the "instance-of" term is used in the non-strict sense, allowing indirect instances, the inheritance root can be wrongly recognized as a metaclass.
  • The requirement that a metaclass is a class disallows (or at least complicates) a uniform view of the Ruby and Smalltalk-80 object model.

The following alternative definition, based on the eigenclass model, avoids all the above problems.

  1. The metaclass root is the class of the inheritance root.
  2. An object is a metaclass if it is an inheritance descendant of the metaclass root.

In (2), inheritance descendant is meant in the non-strict sense – including the metaclass root itself. The definition applies to all of Ruby, Python, Scala, Java, Smalltalk and CLOS, although in the case of the latter two languages care must be taken as to what is meant by class of in (1). Unfortunately, the introspection methods class (in Smalltalk) and class-of (in CLOS) are misleading here.

For Objective-C, a modified definition has to be used due to the multiplicity and degeneracy of inheritance roots.

Read more about this topic:  Metaclass

Famous quotes containing the words alternative and/or definition:

    If you have abandoned one faith, do not abandon all faith. There is always an alternative to the faith we lose. Or is it the same faith under another mask?
    Graham Greene (1904–1991)

    Beauty, like all other qualities presented to human experience, is relative; and the definition of it becomes unmeaning and useless in proportion to its abstractness. To define beauty not in the most abstract, but in the most concrete terms possible, not to find a universal formula for it, but the formula which expresses most adequately this or that special manifestation of it, is the aim of the true student of aesthetics.
    Walter Pater (1839–1894)