Unterschied und Gemeinsamkeiten von abstrakt und interface - Java?

1 Antwort

2. Interfaces sind Zusicherungen für den Compiler über einzelne Eigenschaften deiner Klasse. Wenn du zum Beispiel das Interface Runnable implementierst, versprichst du damit, void run() zu implementieren und deine Klasse damit zu einem Ziel für Threads zu machen.

1. Abstrakte Klassen sind nicht vollständig implementierte und damit nicht nutzbare Klassen, die als Schablone für eine Familie verwandter Klassen dienen sollen, man benutzt sie um eine Menge an Code zu sparen und Verwandtschaft von Klassen bequem auszudrücken.

3. Wie eine Klasse viele verschiedene Eigenschaften haben kann, kann sie auch beliebig viele Interfaces implementieren, aber man kann nur von einer Klasse erben. Es ist dir überlassen, ob das Ding Türen, Fenster, einen Kamin, einen Schornstein hat, aber ob es ein Haus oder ein (sehr merkwürdiges) Auto ist musst du dich entscheiden(vielleicht keins von Beidem, abe rnicht beides.).

Abstrakte Klassen sind oft fast fertige Implementierungen(nicht im implements-Sinne), bei denen man für sehr viel Effekt wenig tun muss, währen Interfaces bis einschließlich Java 7 nichts implementieren(nicht im implements-Sinne) konnten. Seit Java 8 kann man auch sogenannte functional Interfaces für Lambdas machen, was seeehr praktisch aber nicht unbedingt nötig ist.