[racket] inherit, inherit/super, and inherit/inner in class syntax

From: Christopher (ultimatemacfanatic at gmail.com)
Date: Fri Jun 14 16:39:57 EDT 2013

So I have been trying to learn the ins and outs of Racket's class system.  I've a little puzzled when it comes to the "inherit"-forms.  I've poured over the Racket Reference and fiddled with some experimental classes, but I'm still not clear.

My questions specifically are, What is the difference between inherit and inherit/super, and how does inherit/inner work?

Below is a link to the page with the documentation in the Racket reference that I'm trying to understand, along with the pertinent paragraphs.

Any help would be appreciated.  Thanks!



> Inherited and Superclass Methods
> Each inherit, inherit/super, inherit/inner, rename-super, and rename-innerclause declares one or more methods that are defined in the class, but must be present in the superclass. The rename-super and rename-inner declarations are rarely used, since inherit/super and inherit/inner provide the same access. Also, superclass and augmenting methods are typically accessed through super and inner in a class that also declares the methods, instead of through inherit/super, inherit/inner,rename-super, or rename-inner.
> Method names declared with inherit, inherit/super, or inherit/inner access overriding declarations, if any, at run time. Method names declared withinherit/super can also be used with the super form to access the superclass implementation, and method names declared with inherit/inner can also be used with the inner form to access an augmenting method, if any.

Posted on the users mailing list.