6
Interfaces
Sebastian Eidecker edited this page 2019-11-16 12:39:05 +00:00

Definition

  • Interfaces sind per default abstract. Darf aber angegeben werden
  • Methoden sind immer implizit public und daneben auch abstract, wenn nicht static oder default.
  • Felder sind immer Konstanten: public static final, müssen also auch initialisiert werden
  • Initialisierungsblöcke nicht erlaubt, weder statisch noch normal.

Implementierung

  • Interfaces können von jeder Klasse von jeder Stelle aus implementiert werden (bei inneren Interfaces unter Angabe des äußeren implements I1.I2
    • Formal sind sie nicht public, verhalten sich aber so. Wenn angegeben, dann in eigene Datei schreiben.
  • Alle Methoden müssen implementiert werden
  • Implementierte Methoden müssen public sein.
  • Bei Default-Methoden darf die implementierende Klasse keine private gleiche definieren
  • Regeln zum Überschreiben beachten (Sonst evtl. Überladen und damit nicht implementiert)
    • Keine neuen Checked Exceptions
    • Bestehende Checked Exceptions oder deren Subklassen dürfen deklariert werden
    • Exceptions aus Interface müssen nicht angegeben werden, gelten aber! (Gilt auch für abstrakte Klassen)

Static und default-Methoden

  • default-Methoden
    • Sind public, dürfen nicht private, protected, final, abstract, static sein.
    • Werden vererbt und können überschrieben werden
    • Müssen einen Body haben
  • static-Methoden
    • Sind public, dürfen nicht private, protected, final, abstract, default sein.
    • Müssen einen Body haben
    • Werden nicht verebrt, beim Aufruf muss Interface angegeben werden
  • Müssen von implementierenden Klassen nicht implementiert werden

Interessantes

  • Dürfen auch innerhalb von Klassen oder anderen Interfaces deklariert werden (Inneres Interface kann äußeres implementieren)