Classification of Actions or Inheritance also for Methods
<p>The main thing with the sub-class mechanism as found in languages like C++, SIMULA and Smalltalk is its possibility to express <em>specializations</em>. A general class, covering a wide range of objects, may be specialized to cover more specific objects. This is obtained by three properties of sub-classing: An object of a sub-class inherits the attributes of the super-class, virtual procedure/method attributes (of the super-class) may be specialized in the sub-class, and (in SIMULA only) it inherits the actions of the super-class.</p><p>In the languages mentioned above, virtual procedures/methods of a super-class are specialized in sub-classes in a very primitive manner: they are simply <em>re-defined</em> and need not bear any resemblance of the virtual in the super-class. In BETA, a new object-oriented language, classes and methods are unified into one concept, and by an extension of the virtual concept, virtual procedures/methods in sub-classes are defined as <em>specializations of the virtuals</em> in the super-class. The virtual procedures/methods of the sub-classes thus inherit the attributes (e.g. parameters) and actions from the ''super-procedure/method''.</p><p>In the languages mentioned above only procedures/methods may be virtual. As classes and procedures/methods are unified in BETA this gives also <em>virtual classes</em>. The paper demonstrates, how this may be used to parameterize types and enforce constraints on types.</p>