El concepto y el uso de la interfaz Java <Br /> En una clase abstracta, se pueden incluir uno o más métodos abstractos;
Se declara la palabra clave de la interfaz, que puede considerarse como una clase abstracta especial que especifica lo que debe hacer una clase, en lugar de especificar cómo lo hace.
También hay muchos ejemplos de interfaces en la realidad, como los discos duros en serie. El comité en serie ATA no es responsable de producir discos duros, sino que solo especifica especificaciones comunes.
Seagate, Hitachi, Samsung y otros fabricantes producirán discos duros que cumplan con la interfaz de acuerdo con las especificaciones, y estos discos duros pueden generalizarse. 320G SEAGATE SERIAL DISCO ES ESTÁN INSTRÁSTICO.
El siguiente código puede simular el comité ATA en serie para definir la siguiente interfaz de disco duro en serie:
// Interfaz de disco duro en serie SATAHDD {// Número de líneas de conexión Public Static Final Int Connect_line = 4;Nota: Las variables de miembros declaradas en la interfaz son todas estáticas públicas finales de forma predeterminada y deben mostrarse inicializadas. Por lo tanto, estos modificadores se pueden omitir al declarar constantes.
Las interfaces son una colección de varias constantes y métodos abstractos, que actualmente parecen ser similares a las clases abstractas. De hecho, las interfaces evolucionaron a partir de clases abstractas, por lo que a menos que se especifique lo contrario, las interfaces disfrutan del mismo "tratamiento" que las clases. Por ejemplo, se pueden definir múltiples clases o interfaces en el programa fuente, pero a lo sumo una clase o interfaz pública puede estar disponible. Al igual que el formato de herencia de una clase, las interfaces también se pueden heredar, y las subterfaces pueden heredar constantes y métodos abstractos en la interfaz principal y agregar nuevos métodos abstractos, etc.
Sin embargo, la interfaz tiene sus propias características, resumidas de la siguiente manera.
1) Solo se pueden definir métodos abstractos en la interfaz. Intentar definir variables de instancia, métodos de instancia no abstractos y métodos estáticos en una interfaz son todos ilegales. Por ejemplo:
interfaz pública SATAHDD {// El número de líneas de conexión public int Connectline; Be Public Type // Leer Data Public Static String ReadData () {// Error de compilación, la interfaz no puede contener el método de retorno de la compilación del método estático;3) No hay un constructor en la interfaz y no se puede instanciar.
4) Una interfaz no implementa otra interfaz, pero puede heredar varias otras interfaces. La característica múltiple de la interfaz compensa la herencia única de la clase. Por ejemplo:
// Interfaz de disco duro en serie Satahdd extiende A, B {// Número de líneas de conexión public static intence_line = 4; ; interfaz A {public void a ();} interfaz b {public void b ();}Por qué usar la interfaz
En el desarrollo de proyectos a gran escala, puede ser necesario insertar una clase desde el medio de la cadena de herencia para permitir que sus subclases tengan ciertas funciones sin afectar sus clases de padres. Por ejemplo, A -> B -> C -> D -> E, A es una clase de antepasado. clase. Pero el problema es que Java es un solo lenguaje de herencia. De esta manera, las modificaciones a las clases C, D y E afectan a toda la cadena de herencia y no son conectables.
La interfaz es una garantía de insertabilidad. Cualquier clase en una cadena de herencia puede implementar una interfaz, lo que afectará a todas las subclases de esta clase, pero no afectará a ninguna clase principal de esta clase. Dichas clases deberán implementar los métodos especificados por esta interfaz, y las subclases pueden heredar automáticamente estos métodos de esta clase, y en este momento, estas subclases son conectables.
Lo que nos importa no es una clase específica, sino si esta clase implementa la interfaz que necesitamos.
La interfaz proporciona interpolación y llamadas de método.
Las interfaces juegan un papel importante en la programación Java orientada a objetos. De hecho, una de las tareas más importantes en la etapa de diseño es diseñar las interfaces de cada parte y luego formar la estructura del marco básico del programa a través de la combinación de interfaces.
Uso de interfaces
El uso de interfaces es algo diferente del de las clases. Cuando necesite usar una clase, la nueva palabra clave se utilizará directamente para crear una instancia de una clase, pero la interfaz no se puede usar así porque la interfaz no puede usar directamente la nueva palabra clave para crear una instancia.
Una interfaz debe implementar sus métodos abstractos a través de una clase y luego instanciar la clase. La palabra clave de la interfaz de implementación de clase es implementos.
Si una clase no puede implementar todos los métodos abstractos de la interfaz, entonces la clase debe definirse como un método abstracto.
No se permite crear una instancia de una interfaz, pero se permite definir una variable de referencia del tipo de interfaz, que apunta a una instancia de la clase que implementa la interfaz.
Una clase solo puede heredar una clase de padres, pero puede implementar múltiples interfaces.
El formato de la interfaz de implementación es el siguiente:
El nombre de clase de clase modificador extiende la clase principal implementa múltiples interfaces {
Método de implementación
}
Consulte el siguiente ejemplo:
import static java.lang.system.*; Public Class Demo {public static void main (string [] args) {satahdd sh1 = new Seagatehdd (); Samsung Hard Disk}} // Interfaz de disco duro en serie Satahdd {// Número de líneas de conexión pública estática final int Connect_line = 4; ;}// Repair la interfaz de disco duro FixHdd {// Dirección de reparación Dirección de cadena = "Distrito de Haidian, Beijing";// Iniciar reparación boolean dofix ();} // Seagatehdd implementa Satahdd, fixhdd {// Seagatehd Drive Leer Data P UBLIC String readData () {return "data"; // Samsung Hard Drive Class Samsunghdd Un disco duro de calidad mala no puede escribir datos de la clase abstracto xxhdd implementa satahdd {// disco duro que lee datos public string readData () {return "data";Use la interfaz como tipo
La interfaz se utiliza como tipo de referencia. Determine que debería ser qué método de clase se utiliza realmente está llamando al método de clase de implementación correspondiente.
Los ejemplos son los siguientes:
Public Class Demo {public void test1 (a a) {a.daSth (); a); Resultados de ejecución:
Ahora en B
Como puede ver, las interfaces se pueden usar como un tipo, utilizando interfaces como parámetros de métodos y tipos de retorno.
La diferencia entre la interfaz Java y las clases de clase abstracta <Br /> son plantillas de objetos, y las clases e interfaces abstractas pueden considerarse plantillas de clases concretas.
Dado que desde una determinada perspectiva, las interfaces son una clase abstracta especial, tienen una conexión profunda y tienen grandes similitudes, por lo que es fácil confundirse sobre a quién usar. Primero analizamos las similitudes que tienen.
Todos representan capas abstractas de estructuras similares a los árboles. Cuando use variables de referencia, intente usar la capa abstracta de la estructura de clase para separar la definición y la implementación del método.
Ninguno de ellos puede ser instanciado.
Todos pueden contener métodos abstractos. Los métodos abstractos se utilizan para describir qué funciones proporciona el sistema sin tener que preocuparse por las implementaciones específicas.
Hablemos sobre las principales diferencias entre clases abstractas e interfaces.
1) Las clases abstractas pueden proporcionar implementaciones para algunos métodos, evitar implementaciones repetidas de estos métodos en subclases y mejorar la reutilización del código.
Public Abstract Clase A {public abstract void Method1 (); Method1 () {// c Method1}}Resumen La clase A tiene dos subclases B y C. Dado que A tiene la implementación del método Method2 en él, el método Method2 no necesita reescribir en las subclases B y C. Decimos que A proporciona funciones públicas para las subclases, o A limita a él. . Method2 es un ejemplo del código reutilizable. A no define la implementación del método1, es decir, B y C puede implementar el método Method1 de acuerdo con sus propias características, lo que refleja las características del acoplamiento suelto.
Cambiarlo a la interfaz y ver:
interfaz pública a {public void Method1 (); implementa un {public void Method1 () {// C Method1} public void Method2 () {// C Method2}}La interfaz A no puede proporcionar funciones públicas para implementar las clases B y C, lo que significa que A no puede restringir el comportamiento de B y C. B y C puede ejercer libremente sus características y métodos realistas de método1 y método2, y la interfaz A no tiene capacidad de control.
2) Una clase solo puede heredar una clase principal directa (tal vez una clase abstracta), pero una clase puede implementar múltiples interfaces, que es la ventaja de la interfaz.
interfaz A {public void Method2 ();} Interface B {public void Method1 ();} La clase C implementa A, B {public void Method1 () {// C Method1} Public Void Method2 () {// C Method2} } // c se puede usar de manera tan flexible, y C tiene la oportunidad de expandir e implementar otras interfaces A a = new C (); La clase B extiende un {public abstract void Method2 ();} La clase C extiende B {public void Method1 () {// C Method1} public void Method2 () {// C Method2}}Para la Clase C, no habrá posibilidades de heredar otras clases de padres.
En resumen, las interfaces y las clases abstractas tienen sus propias ventajas y desventajas.
El modelo de comportamiento siempre debe definirse a través de interfaces en lugar de clases abstractas, por lo que generalmente se prefieren las interfaces y las clases abstractas deben usarse lo menos posible.
Al elegir una clase abstracta, generalmente es la siguiente situación: debe definir el comportamiento de la subclase y proporcionar funciones generales para la subclase.