Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Thomas Grund Newsgroups: de.comp.lang.java Subject: =?UTF-8?Q?Re:_Grunds=c3=a4tzliche_Frage_zu_Interfaces?= Date: Fri, 8 Jan 2016 06:56:39 +0100 Lines: 25 Message-ID: References: <878u41ku68.fsf@mid.deneb.enyo.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net N2k7qLReNsql0JSGRjhlGw50ZXWORmbLiphOtUiZ3ted6yMpA= Cancel-Lock: sha1:kEPIJdA//Spm+9wWwwBiu9osWUg= User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0 SeaMonkey/2.39 In-Reply-To: <878u41ku68.fsf@mid.deneb.enyo.de> Xref: csiph.com de.comp.lang.java:12898 Florian Weimer wrote: > * Thomas Grund: > >> D'accord! Gegenfrage: Der heutige Einsatz von Interfaces ist ja vor >> allem, die Austauschbarkeit der Implementierungen sicherzustellen >> (also z.B. OpenJPA durch Hibernate ersetzen zu können, ohne den Code >> ändern zu müssen). Kann man etwas Vergleichbares auch ohne Interfaces? > > Mit abstrakten Klassen geht das. Ältere Java-APIs machen das auch > (z.B. java.io.InputStream), weil der Klassen-basierte Methodenaufruf > ohne JIT-Compiler so viel schneller ist als der Umweg über Interfaces. Stimmt. Sie müssen nicht mal abstrakt sein. Interfaces machen halt (nomen est omen) die Schnittstellen deutlicher. Und da wäre noch die Mehrfachvererbung: Bei class A implements B, C {} kann man A wahlweise in B oder C injizieren. Allerdings habe ich dafür noch keine Anwendung gesehen. Thomas