class C similar D {...} declares that class C implements all the public methods in class D and that C instances may be used for D instances. This construct permits omission of explicit interface declaration for D (which was required in the earlier translation). However, code reuse still entails defining a D-type field in class C, and forwarding some method calls to it while redefining others.
This approach can lead to name conflicts and is therefore subject to the complications discussed earlier. Compare, for instance
class Clock extends Applet similar Thread { ... };
So, to simplify matters, it is tempting to require that the superclass of C and the classes similar to C have disjoint methods. However, the semantics of forwarding captured by these translations may not be appropriate as explained below.