Nel mondo OO, classi astratte utilizzate per imporre alcuni vincoli di implementazione del progetto &. Niente di più. Non devi mai usare classi astratte in ogni caso. Ma potrebbero esserci casi in cui è meglio imporre questi vincoli. Quindi cosa sono?Diamo un'occhiata confrontando le sue oo-controparti.
classi astratte vs interfacce
Come sapete, questi sono due dei concetti primari di ereditarietà.
Fondamentalmente, l'interfaccia viene utilizzata solo per dichiarare che si è disposti ad ereditare il servizio sottostante e il gioco è fatto. Non contiene alcuna implementazione & non ha alcuna funzionalità. In questo senso, l'interfaccia è astratta. Ecco perché è più un vincolo di progettazione che un vincolo di implementazione. Pensa a un jack per cuffie su un altoparlante. Ogni cuffia deve implementare l'interfaccia jack (con start, stop, listen, turnDown, metodi turnUp). Ogni cuffia dovrebbe ignorare questa interfaccia per ereditare le funzionalità che l'altoparlante fornisce e implementare di conseguenza.
Le classi astratte, d'altra parte, possono includere metodi con un'implementazione. Questa è la differenza fondamentale e in questo senso può utilizzare riutilizzare più di un'interfaccia. Inoltre, possono contenere campi non statici protetti, protetti da & che non è possibile tramite interfacce. È possibile forzare le sottoclassi per implementare alcune funzionalità must-have con metodi astratti (quelli senza implementazioni). Classi astratte più agili delle interfacce.
Naturalmente per non parlare di estendere una classe in java in cui è possibile implementare il numero di interfacce.
classi astratte vs classi regolari
Allora perché non utilizzare le classi regolari, allora. Qual è il vantaggio dell'uso della classe astratta? Questo è piuttosto semplice. Se si utilizzano classi astratte, si forza la funzionalità di base da implementare dai fratelli. Come sviluppatore, non è necessario ricordare che è necessario implementare le funzioni essenziali. È qui che le classi astratte impongono vincoli di progettazione rispetto alle classi regolari. Inoltre, rendendo l'abstract della classe, si evita che tale classe (incompleta) venga creata accidentalmente.
Saranno i downvoters si prega di indicare il motivo per cui si downvote risposte?!?! – apollodude217