Clase abstracta vs interfície
La classe abstracta i la interfície són dues construccions orientades a objectes que es troben en molts llenguatges de programació orientats a objectes com Java. La classe abstracta es pot considerar com una versió abstracta d'una classe normal (concreta), mentre que una interfície es pot considerar un mitjà per implementar un contracte. La classe abstracta és una classe que no es pot inicialitzar però que es pot ampliar. La interfície és un tipus que ha de ser implementat per altres classes. A Java, les classes abstractes es declaren mitjançant la paraula clau Abstract, mentre que la paraula clau d'interfície s'utilitza per definir una interfície.
Què és una classe abstracta?
Normalment, les classes abstractes, també conegudes com a classes base abstractes (ABC), no es poden instància (no es pot crear una instància d'aquesta classe). Per tant, les classes abstractes només tenen sentit si el llenguatge de programació admet l'herència (capacitat de crear subclasses a partir d'ampliar una classe). Les classes abstractes solen representar un concepte o entitat abstracte amb implementació parcial o sense implementació. Per tant, les classes abstractes actuen com a classes pares de les quals es deriven les classes fills, de manera que la classe secundaria compartirà les característiques incompletes de la classe pare i es poden afegir funcionalitats per completar-les.
Les classes abstractes poden contenir mètodes abstractes. Les subclasses que estenen una classe abstracta poden implementar aquests mètodes abstractes (heretats). Si la classe fill implementa tots aquests mètodes abstractes, és una classe concreta. Però si no ho fa, la classe fill també es converteix en una classe abstracta. El que vol dir tot això és que, quan el programador designa una classe com a Resum, està dient que la classe estarà incompleta i tindrà elements que hauran de completar les subclasses hereves. Aquesta és una bona manera de crear un contracte entre dos programadors, que simplifica les tasques en el desenvolupament de programari. El programador, que escriu codi per heretar, ha de seguir exactament les definicions del mètode (però, per descomptat, pot tenir la seva pròpia implementació).
Què és una interfície?
Una interfície és un tipus abstracte que s'utilitza per especificar un contracte que s'hauria d'implementar per classes, que implementen aquesta interfície. La paraula clau interfície s'utilitza per definir una interfície i la paraula clau Implements s'utilitza per implementar una interfície per una classe (en llenguatge de programació Java). Normalment, una interfície només contindrà signatures de mètodes i declaracions constants. Qualsevol interfície que implementi una interfície particular hauria d'implementar tots els mètodes definits a la interfície, o s'hauria de declarar com una classe abstracta. A Java, el tipus de referència d'un objecte es pot definir com a tipus d'interfície. Però aquest objecte ha de ser nul o hauria de contenir un objecte d'una classe, que implementa aquesta interfície en particular. Utilitzant la paraula clau Implements a Java, podeu implementar diverses interfícies en una sola classe.
Quina diferència hi ha entre la classe abstracta i la interfície?
Les classes abstractes solen representar un concepte abstracte o una entitat amb una implementació parcial o sense implementació. D' altra banda, una interfície és un tipus abstracte que s'utilitza per especificar un contracte que ha de ser implementat per classes. Les classes abstractes s'han d'heretar (o ampliar), mentre que les interfícies s'han d'implementar. Les classes abstractes poden contenir mètodes abstractes, mentre que una interfície només hauria de contenir mètodes abstractes. Les classes abstractes poden contenir qualsevol variable, però les interfícies només poden definir constants. Una classe no pot heretar de més d'una classe abstracta, però pot implementar múltiples interfícies. Una interfície no pot implementar una altra interfície. Tanmateix, una interfície pot ampliar una classe.