Clase abstracta frente a herencia
La clase abstracta y la herencia son dos conceptos importantes orientados a objetos que se encuentran en muchos lenguajes de programación orientados a objetos como Java. La clase abstracta se puede considerar como una versión abstracta de una clase normal (concreta), mientras que la herencia permite que las nuevas clases amplíen otras clases. La clase abstracta es una clase que no se puede inicializar pero se puede extender. Por lo tanto, las clases abstractas solo tienen sentido si el lenguaje de programación admite la herencia. En Java, las clases Abstract se declaran usando la palabra clave Abstract, mientras que la palabra clave Extends se usa para heredar de una (super) clase.
¿Qué es la clase abstracta?
Normalmente, las clases abstractas, también conocidas como clases base abstractas (ABC), no se pueden instanciar (no se puede crear una instancia de esa clase). Por lo tanto, las clases abstractas solo tienen sentido si el lenguaje de programación admite la herencia (capacidad de crear subclases a partir de la extensión de una clase). Las clases abstractas generalmente representan un concepto o entidad abstracta con implementación parcial o nula. Por lo tanto, las clases abstractas actúan como clases principales de las que se derivan las clases secundarias, de modo que la clase secundaria compartirá las funciones incompletas de la clase principal y se puede agregar funcionalidad para completarlas.
Las clases abstractas pueden contener métodos abstractos. Las subclases que extienden una clase abstracta pueden implementar estos métodos abstractos (heredados). Si la clase secundaria implementa todos estos métodos abstractos, es una clase concreta. Pero si no es así, la clase secundaria también se convierte en una clase abstracta. Lo que todo esto significa es que, cuando el programador nombra una clase como Abstract, está diciendo que la clase estará incompleta y tendrá elementos que las subclases heredadas deben completar. Esta es una buena forma de crear un contrato entre dos programadores, lo que simplifica las tareas en el desarrollo de software. El programador, que escribe el código para heredar, necesita seguir exactamente las definiciones del método (pero, por supuesto, puede tener su propia implementación).
¿Qué es la herencia?
La herencia es un concepto orientado a objetos, que permite que nuevas clases amplíen otras clases. La palabra clave Extends se utiliza para implementar el concepto de herencia en el lenguaje de programación Java. La herencia esencialmente proporciona la reutilización del código al permitir extender las propiedades y el comportamiento de una clase existente por una clase recién definida. Cuando una nueva subclase (o clase derivada) amplía una superclase (o clase principal), esa subclase heredará todos los atributos y métodos de la superclase. La subclase puede anular opcionalmente el comportamiento (proporcionar una funcionalidad nueva o ampliada a los métodos) heredado de la clase principal. Por lo general, una subclase no puede extender varias superclases (por ejemplo, en Java). Por lo tanto, no puede usar extensiones para herencia múltiple. Para tener herencia múltiple, necesita usar interfaces.
¿Cuál es la diferencia entre clase abstracta y herencia?
Las clases abstractas generalmente representan un concepto abstracto o una entidad con implementación parcial o nula. La herencia permite que nuevas clases amplíen otras clases. Debido a que las clases abstractas no se pueden instanciar, debe usar el concepto de herencia para hacer uso de las clases abstractas. De lo contrario, una clase abstracta no tiene uso. Las clases abstractas pueden contener métodos abstractos y cuando la clase se extiende, todos los métodos (abstractos y concretos) se heredan. La clase heredada puede implementar cualquiera o todos los métodos. Si no se implementan todos los métodos abstractos, esa clase también se convierte en una clase abstracta. Una clase no puede heredar de más de una clase abstracta (esta no es una cualidad de las clases abstractas per se, sino una restricción de herencia).
Publicaciones relacionadas:
Diferencia entre clase abstracta y clase concreta
Diferencia entre virtual y abstracto
Diferencia entre clase abstracta e interfaz
Diferencia entre implementos y extensiones
Diferencia entre gráfico y árbol
Archivado en: Programación Etiquetado con: ABC, resumen, Clases base abstractas, Clase abstracta, Clases abstractas, Palabra clave abstracta, Métodos abstractos, clase concreta, Palabra clave extendida, Herencia, Clase de herencia, clase heredada, Java, herencia múltiple, conceptos orientados a objetos, clase normal, superclase
Sobre el autor: Indika
Indika, BSc. Eng, MSECE Ingeniería Informática, PhD. Informática, es profesor asistente y tiene intereses de investigación en las áreas de bioinformática, biología computacional y procesamiento biomédico del lenguaje natural.
Comentarios
-
Jason dice
30 de agosto de 2017 a las 13:25
Gracias por explicar la diferencia. Todas mis preguntas han sido resueltas por esto.
Responder
-
Aus dice
10 de mayo de 2019 a las 15:04
mejor respuesta en la web, el profesor no explica una mierda y no tiene sentido, monotono mf. Así se explican los conceptos.
Responder
Deja un comentario Cancelar respuesta
Su dirección de correo electrónico no se publicará. Los campos obligatorios están marcados
Comentario
Nombre
Correo electrónico
Sitio web