Diferencia entre virtual y abstracto

Diferencia entre virtual y abstracto
Diferencia entre virtual y abstracto

Video: Diferencia entre virtual y abstracto

Video: Diferencia entre virtual y abstracto
Video: 📌CLOUD COMPUTING ¿Qué es IaaS, PaaS y Saas? | Modelos de Servicio Cloud 2024, Mes de julio
Anonim

Virtual vs abstracto

Virtual y Abstract son dos palabras clave utilizadas en la mayoría de los lenguajes de programación orientados a objetos (OO), como Java y C. Aunque existen ligeras diferencias en lo que significa en diferentes idiomas, las palabras clave Virtual y Abstract brindan una sensación de implementación parcial a las entidades a las que se adjunta.

Resumen

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 características 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, debe seguir exactamente las definiciones del método (pero, por supuesto, puede tener su propia implementación). En Java y C, las clases y métodos abstractos se declaran mediante la palabra clave Abstract.

Virtual

Los métodos/funciones virtuales brindan la capacidad de anular opcionalmente su comportamiento mediante una clase heredada (usando una función con la misma firma). El concepto de función virtual es importante en el siguiente escenario. Supongamos que una clase se deriva de una clase secundaria, entonces cada vez que se usa un objeto de la clase derivada, puede referirse a un objeto de la clase base o de la clase derivada. Sin embargo, el comportamiento de las llamadas a métodos puede ser ambiguo si se anulan los métodos de la clase base. Entonces, para resolver esta ambigüedad, se usa la palabra clave Virtual. Si el método está marcado como Virtual, entonces se llama a la función de la clase derivada (si existe) o se llama a la función de la clase base. Por ejemplo, en C++, la palabra clave virtual se usa exactamente para este propósito. En C, la palabra clave Virtual se usa de manera similar, pero además, la palabra clave anular debe usarse para modificar todos los métodos anulados. Pero en Java, no hay una palabra clave Virtual explícita. Todos los métodos no estáticos se consideran virtuales. Las funciones virtuales sin cuerpo se denominan funciones virtuales puras. En Java y C, los métodos abstractos son, de hecho, puros virtuales.

Diferencia entre virtual y abstracto

Aunque Abstract y Virtual son dos palabras clave/conceptos que proporcionan un significado de implementación incompleta a sus entidades asociadas, tienen sus diferencias. Los métodos abstractos (que deben definirse dentro de las clases abstractas) no tienen implementación alguna, mientras que los métodos virtuales pueden tener una implementación. Si los métodos abstractos se amplían con una clase concreta, todos los métodos abstractos heredados deben implementarse, mientras que los métodos virtuales heredados pueden o no anularse.

Recomendado: