Este artículo analiza la diferencia entre interfaces y clases abstractas en el aprendizaje de Java, lo cual es crucial para que los principiantes aprendan en profundidad y comprendan con precisión los conceptos de programación Java. Los detalles son los siguientes:
Los principiantes de Java suelen hacer preguntas como: ¿Cuál es la diferencia entre interfaces y clases abstractas? ¿Sobre qué base eliges utilizar interfaces y clases abstractas?
Los conceptos de interfaces y clases abstractas son diferentes. La interfaz es la abstracción de acciones y la clase abstracta es la abstracción de la fuente.
La clase abstracta representa lo que es este objeto. La interfaz representa lo que este objeto puede hacer. Por ejemplo, hombres y mujeres, estas dos clases (si son clases...), su clase abstracta son personas. Explique que todos son seres humanos.
Las personas pueden comer y los perros también pueden comer. Puede definir "comer" como una interfaz y luego dejar que estas clases lo implementen.
Por lo tanto, en los lenguajes de alto nivel, una clase solo puede heredar una clase (clase abstracta) (así como una persona no puede ser un ser vivo y no vivo al mismo tiempo), pero puede implementar múltiples interfaces (comer interfaz , interfaz para caminar).
El primer punto. Una interfaz es una variante de una clase abstracta y todos los métodos de la interfaz son abstractos. Una clase abstracta es una clase que declara la existencia de un método sin implementarlo.
El segundo punto. Las interfaces se pueden heredar, pero las clases abstractas no (Nota: el autor original cometió un error aquí. Las clases abstractas se pueden heredar. Si todas las subclases implementan los métodos en la clase abstracta, la subclase no es una clase abstracta; de lo contrario, una de ellas no se ha implementado. Entonces la subclase también es una clase abstracta)
El tercer punto. Los métodos de definición de interfaz no se pueden implementar, mientras que las clases abstractas pueden implementar algunos métodos.
El cuarto punto. El tipo de datos básico en la interfaz es estático pero la imagen abstracta no lo es.
Cuando te concentras en la esencia de una cosa, usa clases abstractas; cuando te concentras en una operación, usa interfaces.
La funcionalidad de las clases abstractas supera con creces la de las interfaces, pero el costo de definir clases abstractas es alto . Porque en lenguajes de alto nivel (y en términos de diseño real), cada clase solo puede heredar una clase. En esta clase, debes heredar o escribir todas las características comunes de todas sus subclases. Aunque la interfaz tendrá una función mucho más débil, es solo una descripción de una acción. Y puedes implementar múltiples interfaces en una clase al mismo tiempo. La dificultad se reducirá durante la etapa de diseño.