Resum Classe i Interfície
 

La classe abstracte i la interfície són dos 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 regular (concreta), mentre que una interfície es pot considerar com un mitjà per implementar un contracte. La classe abstracte és una classe que no es pot inicialitzar però que es pot ampliar. La interfície és un tipus que ha d’implementar altres classes. A Java, les classes abstractes es declaren mitjançant la paraula clau abstracta, mentre que la paraula clau de la interfície s’utilitza per definir una interfície.

Què és una classe abstracta?

Normalment, les classes abstractes, també conegudes com a Classes abstractes de base (ABC), no es poden iniciar (no es pot crear una instància d'aquesta classe). Així doncs, les classes abstractes només tenen sentit si el llenguatge de programació suporta l’herència (capacitat de crear subclasses des d’ampliar una classe). Les classes abstractes solen representar un concepte o entitat abstracte amb implementació parcial o nul·la. Per tant, les classes abstractes actuen com a classes pares de les quals es deriven les classes infantils de manera que la classe infantil compartirà les característiques incompletes de la classe progenitora i es pot afegir la funcionalitat per completar-les.

Les classes abstractes poden contenir mètodes abstractes. Les subclasses que amplien una classe abstracta poden implementar aquests mètodes abstractes (heretats). Si la classe infantil implementa tots aquests mètodes abstractes, és una classe concreta. Però si no ho fa, la classe infantil també es converteix en una classe Abstract. Tot el que això significa és que, quan el programador nomina una classe com a Resum, diu que la classe no serà completa i que tindrà elements que han 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 hauria de ser implementat per les classes, que implementen aquesta interfície. La paraula clau d’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 conté signatures del mètode i declaracions constants. Qualsevol interfície que implementi una interfície determinada hauria d’implementar tots els mètodes definits a la interfície o hauria de ser declarada com a classe abstracta. A Java, el tipus d'una referència d'objecte es pot definir com un tipus d'interfície. Però aquest objecte ha de ser nul o ha de contenir un objecte d'una classe, que implementi aquesta interfície en particular. Mitjançant la paraula clau Implements a Java, podeu implementar diverses interfícies a una sola classe.

Quina diferència hi ha entre la classe abstracte i la interfície?

Les classes abstractes solen representar un concepte abstracte o una entitat amb implementació parcial o nul·la. D'altra banda, una interfície és un tipus abstracte que s'utilitza per especificar un contracte que hauria de ser implementat per les classes. Les classes abstractes s’han d’heretar (o ampliar), mentre que s’han d’implementar les interfícies. Les classes abstractes poden contenir mètodes abstractes, mentre que una interfície només ha 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 estendre una classe.