Resumen clase e interfaz
Clase abstracta vs. interfaz
La clase abstracta (o tipo) es un tipo de en un sistema de tipo nominativo declarado por el programa. Aunque el nombre lo indica, una clase abstracta puede incluir o no métodos o propiedades abstractas. La clase de distinción se refiere a diferentes construcciones de lenguaje que pueden usarse para implementar tipos abstractos. Las clases abstractas se pueden caracterizar por un problema de diseño que se mantiene con la mejor programación orientada a objetos y por sus naturalezas inacabadas.
Una interfaz es un tipo abstracto que las clases deben implementar para especificar una interfaz (en términos generales). Las interfaces solo pueden contener firmas de métodos y declaraciones constantes (tanto estáticas como finales), nunca definiciones de métodos. Las interfaces simulan múltiples herencias y se utilizan para codificar similitudes compartidas entre varios tipos de clases.
Los tipos abstractos se pueden crear, significar o simular de diferentes maneras. Un programador puede significar tipos abstractos usando la palabra clave abstract explícitamente, incluyendo uno o más métodos en la definición de clase, heredando de otro tipo abstracto sin anular las características faltantes necesarias para completar la definición de clase, o enviando un método particular al objeto orientado Lenguaje de programación conocido como este que no implementa el método directamente.
Las interfaces se pueden definir utilizando métodos abstractos. Las clases también se pueden implementar en interfaces. Si una clase implementa una interfaz y no implementa todos sus métodos, se debe usar el resumen del significante, de lo contrario ese significante no es necesario (porque todas las interfaces son inherentemente abstractas). Las clases también pueden implementar múltiples interfaces.
Mientras que las interfaces se utilizan para especificar interfaces genéricas, los tipos abstractos se pueden usar para definir y aplicar el protocolo (que es un conjunto de operaciones que deben admitir todos los objetos que implementan el protocolo deseado). Los tipos abstractos no aparecen en idiomas sin subtipos. Como tales, los subtipos se ven obligados a implementar toda la funcionalidad necesaria, lo que garantiza la corrección de la ejecución del programa. Hay varias formas en que se pueden crear los tipos abstractos: las clases base abstractas completas son clases que se declaran explícitamente como abstractas o contienen métodos abstractos (no implementados); Los sistemas de objetos Common Lisp incluyen mixins que se basan en el sistema Flavors; Java, por supuesto; y Rasgos, que actúa como una extensión de Smalltalk.
Resumen: 1. Clases abstractas (o tipos) declaran programas; las interfaces son tipos abstractos que todas las clases deben implementar para especificar su interfaz. 2. Los tipos abstractos pueden ser significados usando la palabra clave explícitamente; las interfaces son intrínsecamente abstractas, por lo tanto, no es necesario que se identifiquen utilizando la palabra clave (a menos que una clase específica implemente una interfaz pero no implemente todos sus métodos).