Diferencia entre clase abstracta e interfaz

Diferencia entre clase abstracta e interfaz
Diferencia entre clase abstracta e interfaz

Video: Diferencia entre clase abstracta e interfaz

Video: Diferencia entre clase abstracta e interfaz
Video: Switch de ideas, ¿Qué es Joint Venture? 2024, Mes de julio
Anonim

Clase abstracta frente a interfaz

La clase abstracta y la interfaz son dos construcciones orientadas 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 una interfaz se puede considerar como un medio para implementar un contrato. La clase abstracta es una clase que no se puede inicializar pero se puede extender. La interfaz es un tipo que debe ser implementado por otras clases. En Java, las clases abstractas se declaran mediante la palabra clave Abstract, mientras que la palabra clave de interfaz se utiliza para definir una interfaz.

¿Qué es una 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 una interfaz?

Una interfaz es un tipo abstracto que se utiliza para especificar un contrato que deben implementar las clases, que implementan esa interfaz. La palabra clave de interfaz se usa para definir una interfaz y la palabra clave Implements se usa para implementar una interfaz por una clase (en el lenguaje de programación Java). Por lo general, una interfaz solo contendrá firmas de métodos y declaraciones constantes. Cualquier interfaz que implemente una interfaz en particular debe implementar todos los métodos definidos en la interfaz, o debe declararse como una clase abstracta. En Java, el tipo de referencia de un objeto se puede definir como un tipo de interfaz. Pero ese objeto debe ser nulo o debe contener un objeto de una clase, que implementa esa interfaz en particular. Usando la palabra clave Implements en Java, puede implementar múltiples interfaces en una sola clase.

¿Cuál es la diferencia entre clase abstracta e interfaz?

Las clases abstractas generalmente representan un concepto abstracto o una entidad con implementación parcial o nula. Por otro lado, una interfaz es un tipo abstracto que se usa para especificar un contrato que debe ser implementado por clases. Las clases abstractas deben heredarse (o extenderse), mientras que las interfaces deben implementarse. Las clases abstractas pueden contener métodos abstractos, mientras que una interfaz solo debe contener métodos abstractos. Las clases abstractas pueden contener cualquier variable, pero las interfaces solo pueden definir constantes. Una clase no puede heredar de más de una clase abstracta pero puede implementar múltiples interfaces. Una interfaz no puede implementar otra interfaz. Sin embargo, una interfaz puede extender una clase.

Recomendado: