1. Por qué usar interfaces
Si hay un requisito: requiere la función de la puerta antirrobo. La puerta tiene las funciones de "abierto" y "cerrado", y la cerradura tiene las funciones de "bloqueo" y "apertura".
Análisis: En primer lugar, la puerta antirrobo es una puerta. La puerta tiene las funciones de abrir y cerrar la puerta, y también hay una cerradura. La cerradura tiene desbloqueo y bloqueo. Según la idea de la programación orientada a objetos, consideraremos tanto la puerta como la cerradura como una clase y existir por separado. Sin embargo, la puerta antirrobo no puede ser heredada de la puerta y el bloqueo automático. La puerta antirrobo no es una cerradura, lo que no se ajusta a la relación de IS A en herencia. La herencia única es compatible con Java. Entonces, ¿cómo resolvemos este problema? En este momento, necesitamos usar la interfaz.
2. ¿Qué es una interfaz?
En el software, las interfaces son una especificación y estándar. Pueden restringir el comportamiento de las clases y son una colección de algunas características del método. Sin embargo, no hay implementación de métodos. Las interfaces en realidad pueden considerarse como una clase abstracta especial, pero utilizan métodos completamente diferentes de las clases abstractas para representarlas. Los conceptos de diseño de los dos también son diferentes. Las clases abstractas conducen a la reutilización de códigos, y las interfaces conducen a la expansión y el mantenimiento del código.
3. La diferencia entre clases abstractas e interfaces:
Las clases 01Abstract pueden proporcionar detalles de implementación de los métodos miembros, mientras que solo los métodos públicos de resumen pueden existir en la interfaz;
02. Las variables miembros en clases abstractas pueden ser de varios tipos, mientras que las variables miembros en las interfaces solo pueden ser de tipo público estático final;
03. La interfaz no puede contener bloques de código estáticos y métodos estáticos, mientras que las clases abstractas pueden tener bloques de código estáticos y métodos estáticos;
04. Una clase solo puede heredar una clase abstracta, mientras que una clase puede implementar múltiples interfaces.
4. Cómo definir una interfaz
Primero veamos la sintaxis:
[Modificador] El nombre de la interfaz de la interfaz extiende la interfaz parent 1, Interfaz de padres 2, ...
{
// Definición constante
// Definición de método
}
Implementar la sintaxis de la interfaz en una clase:
Nombre de clase de clase Nombre de clase principal Implementa la interfaz 1, interfaz 2, ...
{
// miembro de la clase
}
5. Definición de los puntos de interfaz
01. Las reglas de nombres de la interfaz son las mismas que las de la clase. Si el modificador es público, la interfaz es visible durante todo el proyecto; Si se omite el modificador, la interfaz solo es visible en el paquete actual.
02. Las constantes se pueden definir en la interfaz, pero las variables no se pueden definir. Si define los atributos en la interfaz, entonces, a través de la descompilación, puede ver que lo modificará automáticamente con Public Static Final. Los atributos en la interfaz son todas constantes estáticas globales, y las constantes en la interfaz deben especificar el valor inicial al definir.
03. Todos los métodos en la interfaz son métodos abstractos, y los métodos en la interfaz se modificarán automáticamente con el resumen público, es decir, solo hay métodos abstractos globales en la interfaz.
04. La interfaz no se puede instanciar y no puede haber una estructura en la interfaz.
05 La relación de herencia se puede realizar a través de extensiones entre interfaces. Una interfaz puede heredar múltiples interfaces, pero la interfaz no puede heredar clases.
06. La clase de implementación de la interfaz debe implementar todos los métodos de la interfaz, de lo contrario, debe definirse como una clase abstracta.