diff --git a/Interfaces.md b/Interfaces.md index 3f1a922..617c696 100644 --- a/Interfaces.md +++ b/Interfaces.md @@ -1,11 +1,18 @@ -## Definition und 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. +## 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 +- Regeln zum Überschreiben beachten (Sonst evtl. Überladen und damit nicht implementiert) + - Keine neuen **Checked** Exceptions + - Bestehende Checked Exceptions höchstens Subklasse + - Exceptions aus Interface müssen nicht angegeben werden, gelten aber! (Gilt auch für abstrakte Klassen) + ## Static und default-Methoden - - Müssen von implementierenden Klassen nicht implementiert werden