Classe abstracta vs herència
La classe abstracta i l'herència són dos conceptes importants orientats 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 l'herència permet que noves classes estenguin altres classes. La classe abstracta és una classe que no es pot inicialitzar però que es pot ampliar. Per tant, les classes abstractes només tenen sentit si el llenguatge de programació admet l'herència. A Java, les classes abstractes es declaren mitjançant la paraula clau Abstract, mentre que la paraula clau Extends s'utilitza per heretar d'una (super) classe.
Què és la 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 l'herència?
L'herència és un concepte orientat a objectes, que permet que noves classes estenguin altres classes. La paraula clau Extends s'utilitza per implementar el concepte d'herència en el llenguatge de programació Java. L'herència proporciona essencialment la reutilització del codi permetent estendre les propietats i el comportament d'una classe existent per una classe recentment definida. Quan una nova subclasse (o classe derivada) amplia una superclasse (o classe pare), aquesta subclasse heretarà tots els atributs i mètodes de la superclasse. La subclasse pot substituir opcionalment el comportament (proporcionar una funcionalitat nova o ampliada als mètodes) heretat de la classe pare. Normalment, una subclasse no pot estendre múltiples superclasses (per exemple, a Java). Per tant, no podeu utilitzar extensions per a l'herència múltiple. Per tenir una herència múltiple, heu d'utilitzar interfícies.
Quina diferència hi ha entre la classe abstracta i l'herència?
Les classes abstractes solen representar un concepte abstracte o una entitat amb una implementació parcial o sense implementació. L'herència permet que noves classes estenguin altres classes. Com que les classes abstractes no es poden instanciar, cal que utilitzeu el concepte d'herència per fer ús de les classes abstractes. En cas contrari, una classe abstracta no serveix de res. Les classes abstractes poden contenir mètodes abstractes i quan la classe s'amplia, tots els mètodes (abstractes i concrets) s'hereten. La classe heretada pot implementar qualsevol o tots els mètodes. Si no s'implementen tots els mètodes abstractes, aquesta classe també es converteix en una classe abstracta. Una classe no pot heretar de més d'una classe abstracta (això no és una qualitat de les classes abstractes per se, sinó una restricció d'herència).
Publicacions relacionades:
Diferència entre la classe abstracta i la classe concreta
Diferència entre virtual i abstracte
Diferència entre la classe abstracta i la interfície
Diferència entre implements i ampliacions
Diferència entre gràfic i arbre
Arxivat a: Programació Etiquetat amb: ABC, resum, Classes base abstractes, Classes abstractes, Classes abstractes, Paraula clau abstracta, Mètodes abstractes, classe concreta, Paraula clau amplia, Herència, Classe heretada, Classe heretada, Java, herència múltiple, conceptes orientats a objectes, classe normal, superclasse
Sobre l'autor: Indika
Indika, BSc. Eng, MSECE Enginyeria Informàtica, PhD. Informàtica, és professor adjunt i té interessos de recerca en les àrees de bioinformàtica, biologia computacional i processament biomèdic del llenguatge natural.
Comentaris
-
Jason diu
30 d'agost de 2017 a les 13:25
Gràcies per explicar la diferència. Totes les meves preguntes s'han resolt amb això.
Resposta
-
Aus diu
10 de maig de 2019 a les 15:04
millor resposta al web, el professor no explica cap merda i no té sentit, mf mono. Així expliques els conceptes.
Resposta
Deixa una resposta Cancel·la la resposta
La vostra adreça electrònica no es publicarà. Els camps obligatoris estan marcats amb
Comentari
Nom
Correu electrònic
Lloc web