Unterschied zwischen Abstrakter Klasse und Interface?
Ich wende mich an euch, weil ich es sonst nirgendwo verstanden habe.
In Java ist Mehrfachvererbung nicht erlaubt; bedeutet eine Klasse kann nicht von mehr als einer Klasse erben. Gleiches gilt für Abstrakte Klassen. Ich verstehe nicht wie Interfaces Mehrfachvererbung möglich machen sollen und habe keine vernünftige Erklärung gefunden, was der große Unterschied ist, welcher Interfaces fähig zur Mehrfachvererbung macht.
2 Antworten
Interfaces implementieren keine Mehrfachvererbung. Interfaces werden verwendet, um Protokollkompatibilität zwischen Klassen zu erzwingen, die ansonsten in keiner hierarchischen Beziehung zueinander stehen.
Eine Klasse kann mehrere Interfaces implementieren; das sieht ein bißchen nach Mehrfachvererbung aus, es ist aber keine Mehrfachverarbeitung, da eine Klasse alle Methoden aller verwendeten Interfaces implementieren muss.
Ab Java 8 kann eine Interface Spezifikation allerdings Definitionen für default methods und static methods enthalten; damit wird eine eingeschränkte Mehrfachvererbung in Java erstmals möglich, bei der eine Klasse die default methods mehrerer Interfaces genau dann erbt, wenn sie diese Methoden nicht selbst definiert.
Vielleicht helfen dir diese Links:
https://www.centron.de/tutorial/java-8-interface-aenderungen/
https://entwickler.de/java/java-tutorial-java-8-methoden-in-interfaces
Herzlichen Dank für die ausführliche Antwort. Leider wurde das so präzise nicht in der Vorlesung vorgestellt. Ich wünsche dir noch einen schönen Abend
Abstrakte Klasse -> Vererbung
Interfaces -> Komposition
Vererbung ist böse, Komposition ist gut.
Den Rest hat BorisG2011 gut erklärt :)