Abstrakta klasser och gränssnitt Likheter: (1) kan ärvas (2) kan inte instansieras (3) kan innehålla metoddeklarationer (4) Den härledda klassen måste implementera den icke-implementerade metoden Kategori: (1) Abstrakta basklasser kan definiera fält, egenskaper och metodimplementationer. Gränssnitt kan endast definiera attribut, indexerare, händelser och metoddeklarationer, och kan inte innehålla fält. (2) En abstrakt klass är en ofullständig klass som behöver ytterligare förfining, medan ett gränssnitt är en beteendenorm. Microsofts anpassade gränssnitt levereras alltid med ett kapabel fält för att bevisa att de är uttryck för "Jag kan göra det..." ” (3) Gränssnitt kan implementeras flera gånger, och abstrakta klasser kan endast ärvas av en enda person (4) Abstrakta klasser är mer definierade mellan en serie nära besläktade klasser, medan de flesta gränssnitten är löst relaterade klasser som alla implementerar en viss funktion (5) Abstrakta klasser är begrepp abstraherade från en serie relaterade objekt, så de speglar tingens interna gemenskap; Ett gränssnitt är en funktionell konvention definierad för att tillfredsställa externa anrop, så det speglar de yttre egenskaperna hos saker (6) Gränssnittet har i princip inga specifika arvsegenskaper, det lovar bara metoder som kan anropas (7) Gränssnitt kan användas för att stödja återkallelser, men arv har inte denna funktion (8) De specifika metoder som implementeras av abstrakta klasser är virtuella som standard, men gränssnittsmetoderna i klassen som implementerar gränssnittet är icke-virtuella som standard, naturligtvis kan du också deklarera dem virtuella (9) Om en abstrakt klass implementerar ett gränssnitt kan metoden i gränssnittet mappas till den abstrakta klassen som en abstrakt metod utan att behöva implementera den, och metoden i gränssnittet kan implementeras i en underklass av den abstrakta klassen
|