Sie sind ziemlich ähnlich, aber es gibt einige wichtige technische Unterschiede:
Diese Unterschiede beeinflussen, wie die zwei Techniken verwendet werden sollten:
Eine Schnittstelle erlaubt keine Definition einer der Member-Methoden, während eine abstrakte Klasse erlaubt, einige oder alle zu definieren. Eine Klasse kann jedoch nur eine Klasse (abstrakt oder nicht) erweitern, kann aber beliebig viele Schnittstellen implementieren.
Ich denke gerne an eine Schnittstelle als einen Vertrag. Jede Klasse, die eine Schnittstelle implementiert, muss Details darüber angeben, was zu tun ist, wenn eine im Vertrag definierte Methode aufgerufen wird. Eine abstrakte Klasse ist eine Klasse, die eine Menge tatsächlicher Verhaltensweisen definiert, dh mehr als nur einen später zu implementierenden Vertrag, aber diese Klasse kann nicht instanziiert werden.
Tags und Links java