Clase abstracta vs 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 puede considerarse como una versión abstracta de una clase regular (concreta), mientras que la herencia permite que las nuevas clases extiendan otras clases. La clase abstracta es una clase que no se puede inicializar pero que se puede extender. Entonces, las clases abstractas solo son significativas si el lenguaje de programación admite la herencia. En Java, las clases abstractas se declaran utilizando la palabra clave abstracta, mientras que la palabra clave extensas se usa para heredar desde una clase (super).
¿Qué es la clase abstracta??
Por lo general, 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 son significativas si el lenguaje de programación admite la herencia (la capacidad de crear subclases para extender 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 cuales se derivan las clases de los niños para que la clase infantil comparta las características incompletas de la clase y la funcionalidad de los padres para completarlas 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 infantil implementa todos estos métodos abstractos, es una clase concreta. Pero si no es así, la clase infantil también se convierte en una clase abstracta. Lo que esto significa es que, cuando el programador nomine a una clase como resumen, dice que la clase estará incompleta y tendrá elementos que deben completarse con las subclases heredadas. Esta es una buena manera de crear un contrato entre dos programadores, lo que simplifica las tareas en el desarrollo de software. El programador, que escribe código para heredar, necesita seguir las definiciones de métodos exactamente (pero, por supuesto, puede tener su propia implementación).
Que es la herencia?
La herencia es un concepto orientado a objetos, que permite que nuevas clases extiendan otras clases. La palabra clave extiende se utiliza para implementar el concepto de herencia en el lenguaje de programación Java. La herencia esencialmente proporciona una reutilización de código al permitir la extensión de las propiedades y el comportamiento de una clase existente por una clase recientemente definida. Cuando una nueva subclase (o clase derivada) extiende una súper clase (o clase principal), la subclase heredará todos los atributos y métodos de la súper clase. La subclase puede anular opcionalmente el comportamiento (proporcionar funcionalidad nueva o extendida a los métodos) heredado de la clase principal. Por lo general, una subclase no puede extender múltiples súper clases (E.gramo. en Java). Por lo tanto, no puede usar extensiones para la herencia múltiple. Para tener una herencia múltiple, debe usar interfaces.
¿Cuál es la diferencia entre la clase abstracta y la herencia??
Las clases abstractas generalmente representan un concepto abstracto o una entidad con implementación parcial o nula. La herencia permite que las nuevas clases extiendan otras clases. Porque, las clases abstractas no se pueden instanciar, debe utilizar el concepto de herencia para hacer uso de clases abstractas. De lo contrario, una clase abstracta no tiene uso. Las clases abstractas pueden contener métodos abstractos y cuando se extiende la clase, se heredan todos los métodos (abstractos y concretos). 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 la herencia).