Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Naja, zumindest sichtbar aus dem jeweiligen Kontext heraus. Ich glaube bei der Frage aber nicht, daß der TO hier mit komplexeren Kapselungen herumzaubert. (Nicht böse gemeint.)
Ok, also es haben sich da einige Fehler eingeschlichen die man beheben soll. Mir geht es nicht um die Fehler sondern um die Punktnotation. Wenn int x,y Instanzvariablen und ich auf diese zugreifen will geht das über die Punktnotation? Das ergibt sich mir irgendwie nicht ganz. Dachte man verwendet diese notation nur um auf methoden aus anderen Klassen zugreifen zu wollen?
Woher weiß man überhupt das Comparable ein Interface ist und folglich es class Rational implements Comparable sein muss. Es ist doch gar kein Code davon vorhanden? Oder muss man das erschließen indem man die Codezeile liest mit extends=ist ein was kein Sinn macht in dem Zusammenhang -> ersetzen durch implements=hat die Eigenschaft (macht eher Sinn).
Du kannst auf die Elemente der Klasse zugreifen, die an der Stelle sichtbar sind. Also auch Felder.
Das Feld x ist zwar private, aber da der Code in der Klasse selbst ist, hast du da auch Zugriff auf die private Elemente.
Naja...vererbt wird mit extends (Klasse x erweitert y), implementiert wird mit implements (Klasse x baut y ein).
Extends drückt definitiv eine Ist-ein-Beziehung aus. Hund erbt von Tier -> Hund ist ein Tier.
Interfaces dagegen sind eine Erweiterung, daher enden deren Bezeichnungen ja häufig auf 'able'. Manche Tiere sind z.B. schwimmfähig (und implementieren daher das Interface Swimable, bzw. Schwimmfähig).
Ich glaube, sein Punkt war, dass aus der Aufgabenbeschreibung bzw. dem gegebenen Code nirgendwo hervorgeht, dass Comparable (bzw. java.lang.Comparable) eigentlich ein Interface ist und damit wohl das Schlüsselwort `extends` falsch sein könnte.
Es könnte aber gut und gerne auch eine eigene, selbstgeschriebene Klasse gemeint sein, die nicht gezeigt wurde, die ebenfalls eine abstrakte compareTo(Object) Methode deklariert.
Dadurch, dass man Klassen aus `java.lang` aber nicht manuell importieren muss und eben kein Code einer Comparable Klasse gegeben ist, halte ich es für am wahrscheinlichsten, dass `extends` falsch ist und durch `implements` ersetzt werden sollte.