¿Cómo distinguir clases e interfaces abstractas en Java?
Comprensión de las clases abstractas
En el lenguaje Java, la clase abstracta (clase abstracta) y la interfaz (interfaz) se utilizan para representar clases abstractas en las que todos los métodos miembros son abstractos.
Desde una perspectiva de programación, se pueden utilizar tanto clases abstractas como interfaces para implementar la idea de "diseño por contrato".
Desde una perspectiva de programación, tanto la clase abstracta como la interfaz se pueden utilizar para implementar la idea de "diseño por contrato".
En primer lugar, la clase abstracta en el lenguaje Java representa una relación de continuación, y una clase solo se puede usar una vez para continuar esta relación. Sin embargo, una clase puede implementar múltiples interfaces, lo que puede ser un compromiso entre los diseñadores del lenguaje Java y el soporte de Java para múltiples relaciones de continuación.
En segundo lugar, en la definición de clase abstracta, podemos asignar un comportamiento predeterminado al método. Pero en la definición de la interfaz, los métodos no pueden tener un comportamiento predeterminado; para evitar esta restricción, debe usar delegados, pero esto agrega cierta complejidad y, a veces, trae muchos problemas.
Otro problema grave de no poder definir el comportamiento predeterminado en una clase abstracta es que puede generar problemas de mantenimiento. Esto se debe a que puede ser muy engorroso si luego desea modificar la interfaz de una clase (generalmente representada por una clase abstracta o una interfaz) para adaptarla a nuevas situaciones (por ejemplo, agregar nuevos métodos o agregar nuevos parámetros a los métodos existentes), y puede tomar mucho tiempo (especialmente si tienes muchas clases derivadas). Sin embargo, si la interfaz se implementa a través de una clase abstracta, entonces puede ser suficiente cambiar el comportamiento predeterminado definido en la clase abstracta.
Del mismo modo, si no puede definir el comportamiento predeterminado en una clase abstracta, entonces aparecerá la misma implementación del método en cada clase derivada de esa clase abstracta, lo que viola el principio "onerule, oneplace" y conduce a la repetición del código. También es perjudicial para el mantenimiento futuro. Por lo tanto, debes tener mucho cuidado al elegir entre clase abstracta o interfaz.
Observando la clase abstracta y la interfaz desde la perspectiva de los conceptos de diseño
Lo anterior explica principalmente la diferencia entre la clase abstracta y la interfaz desde la perspectiva de la definición de sintaxis y la programación. Las diferencias en estos niveles son. nivel relativamente bajo e innecesario. Changping Town Computer Training cree que esta sección analizará la diferencia entre clase abstracta e interfaz desde otro nivel: los conceptos de diseño incorporados por los dos. Creo que sólo analizando desde este nivel podemos entender la esencia de los dos conceptos.