Abstrakte Klassen und Schnittstellen Gemeinsamkeiten: (1) vererbt werden kann (2) nicht instanziiert werden kann (3) Methodendeklarationen enthalten können (4) Die abgeleitete Klasse muss die nicht implementierte Methode implementieren Kategorie: (1) Abstrakte Basisklassen können Felder, Eigenschaften und Methodenimplementierungen definieren. Schnittstellen können nur Attribute, Indexierer, Ereignisse und Methodendeklarationen definieren und können keine Felder enthalten. (2) Eine abstrakte Klasse ist eine unvollständige Klasse, die weiter verfeinert werden muss, während eine Schnittstelle eine Verhaltensnorm ist. Microsofts benutzerdefinierte Schnittstellen verfügen immer über ein fähiges Feld, das beweist, dass sie Ausdruck des "Ich schaffe das..." sind. ” (3) Schnittstellen können mehrfach implementiert werden, und abstrakte Klassen können nur von einer einzelnen Person geerbt werden (4) Abstrakte Klassen sind stärker zwischen einer Reihe eng verwandter Klassen definiert, während die meisten Schnittstellen lose verwandte Klassen sind, die alle eine bestimmte Funktion implementieren (5) Abstrakte Klassen sind Konzepte, die aus einer Reihe verwandter Objekte abstrahiert wurden, sodass sie die innere Gemeinsamkeit der Dinge widerspiegeln; Eine Schnittstelle ist eine funktionale Konvention, die definiert ist, um externe Aufrufe zu erfüllen, und spiegelt daher die äußeren Eigenschaften von Dingen wider (6) Die Schnittstelle besitzt im Grunde keine spezifischen Vererbungsmerkmale, sondern verspricht nur Methoden, die aufgerufen werden können (7) Schnittstellen können zur Unterstützung von Rückrufen verwendet werden, aber die Vererbung besitzt diese Funktion nicht (8) Die spezifischen Methoden, die von abstrakten Klassen implementiert werden, sind standardmäßig virtuell, aber die Schnittstellenmethoden in der Klasse, die die Schnittstelle implementieren, sind standardmäßig nicht-virtuell; natürlich kann man sie auch als virtuell deklarieren (9) Wenn eine abstrakte Klasse eine Schnittstelle implementiert, kann die Methode in der Schnittstelle als abstrakte Methode auf die abstrakte Klasse abgebildet werden, ohne sie implementieren zu müssen, und die Methode in der Schnittstelle kann in einer Unterklasse der abstrakten Klasse implementiert werden
|