Was ist der Unterschied zwischen einer Schnittstelle und einer abstrakten Klasse? [Duplikat]

8

Ich bin nicht genau über den Unterschied klar.

Danke

    
jmasterx 08.11.2010, 18:49
quelle

3 Antworten

17

Sie sind ziemlich ähnlich, aber es gibt einige wichtige technische Unterschiede:

  • Eine abstrakte Klasse ermöglicht es Ihnen, eine Standardimplementierung für einige der Methoden bereitzustellen, aber eine Schnittstelle ermöglicht keine Implementierung.
  • Sie können mehrere Schnittstellen implementieren, aber Sie können nur von einer abstrakten Klasse erben.

Diese Unterschiede beeinflussen, wie die zwei Techniken verwendet werden sollten:

  • Sie sollten eine Schnittstelle verwenden, um einen Vertrag zu definieren .
  • Eine abstrakte Klasse kann nützlich sein, um Code erneut zu verwenden ... aber bedenken Sie, dass dies nicht die einzige Möglichkeit ist, Code wiederzuverwenden. Sie sollten auch andere Ansätze wie Containment in Betracht ziehen.
Mark Byers 08.11.2010, 18:51
quelle
4

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.

    
Reese Moore 08.11.2010 18:51
quelle
3

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.

    
shsteimer 08.11.2010 18:52
quelle

Tags und Links