[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!

--Christopher


http://docs.racket-lang.org/reference/createclass.html?q=class&q=arg-list-expr&q=define-values&q=contract-out&q=hash/c&q=match&q=cond&q=match&q=set-hash%21&q=let-values&q=list/c&q=is-a&q=listof&q=subclass&q=class/c&q=make-string&q=hash%3F&q=init-field&q=class/c&q=-%3E&q=chaperone&q=pos&q=positive&q=goto-line

> 5.2.3.2 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.