Classi astratte e interfacce Somiglianze: (1) può essere ereditato (2) non può essere istanziata (3) può contenere dichiarazioni di metodo (4) La classe derivata deve implementare il metodo non implementato Categoria: (1) Le classi base astratte possono definire campi, proprietà e implementazioni di metodi. Le interfacce possono definire solo attributi, indicizzatori, eventi e dichiarazioni di metodi, e non possono contenere campi. (2) Una classe astratta è una classe incompleta che necessita di ulteriori affinazioni, mentre un'interfaccia è una norma comportamentale. Le interfacce personalizzate di Microsoft sono sempre dotate di un campo valido per dimostrare di essere espressioni del "Posso farcela..." ” (3) Le interfacce possono essere implementate più volte, e le classi astratte possono essere ereditate solo da una singola persona (4) Le classi astratte sono più definite tra una serie di classi strettamente correlate, mentre la maggior parte delle interfacce sono classi vagamente correlate che implementano tutte una certa funzione (5) Le classi astratte sono concetti astratti da una serie di oggetti correlati, quindi riflettono la comunanza interna delle cose; Un'interfaccia è una convenzione funzionale definita per soddisfare chiamate esterne, quindi riflette le caratteristiche esterne delle cose (6) L'interfaccia fondamentalmente non presenta caratteristiche specifiche di ereditarietà, promette solo metodi che possono essere chiamati (7) Le interfacce possono essere usate per supportare callback, ma l'ereditarietà non possiede questa funzione (8) I metodi specifici implementati dalle classi astratte sono virtuali di default, ma i metodi di interfaccia nella classe che implementano l'interfaccia sono non virtuali di default; ovviamente, puoi anche dichiararli virtuali (9) Se una classe astratta implementa un'interfaccia, il metodo nell'interfaccia può essere mappato alla classe astratta come metodo astratto senza doverlo implementare, e il metodo nell'interfaccia può essere implementato in una sottoclasse della classe astratta
|