Abstrakte klasser og grænseflader Ligheder: (1) kan arves (2) kan ikke instansieres (3) kan indeholde metodedeklarationer (4) Den afledte klasse skal implementere den ikke-implementerede metode Kategori: (1) Abstrakte baseklasser kan definere felter, egenskaber og metodeimplementeringer. Grænseflader kan kun definere attributter, indeksere, begivenheder og metodedeklarationer, og kan ikke indeholde felter. (2) En abstrakt klasse er en ufuldstændig klasse, der kræver yderligere forfinelse, mens en grænseflade er en adfærdsnorm. Microsofts brugerdefinerede grænseflader leveres altid med et effektivt felt, der beviser, at de er udtryk for "Jeg kan gøre det..." ” (3) Grænseflader kan implementeres flere gange, og abstrakte klasser kan kun arves af én person (4) Abstrakte klasser er mere definerede mellem en række nært beslægtede klasser, mens de fleste grænseflader er løst beslægtede klasser, der alle implementerer en bestemt funktion (5) Abstrakte klasser er begreber, der er abstraheret fra en række beslægtede objekter, så de afspejler tingenes indre fællesnævn; Et interface er en funktionel konvention defineret for at opfylde eksterne kald, så den afspejler tingenes eksterne karakteristika (6) Grænsefladen har grundlæggende ingen specifikke arvelige karakteristika, den lover kun metoder, der kan kaldes (7) Interfaces kan bruges til at understøtte callbacks, men arv har ikke denne funktion (8) De specifikke metoder, der implementeres af abstrakte klasser, er virtuelle som standard, men grænseflademetoderne i klassen, der implementerer grænsefladen, er som standard ikke-virtuelle, og du kan selvfølgelig også erklære dem virtuelle (9) Hvis en abstrakt klasse implementerer et interface, kan metoden i interfacet mappes til den abstrakte klasse som en abstrakt metode uden at skulle implementere den, og metoden i interfacet kan implementeres i en underklasse af den abstrakte klasse
|