Java - Interface
Concepto
-
Interfazes unaClase Abstracta Pura-
Todos los
métodosque contienen sonimplícitamente abstractos-
Son prototipos de
métodos -
Sólo contienen la firma/signatura del
método -
El contenido del método se lo añade las clases concretas o abstractas que la implementen o extiendan la interface
-
-
// Cabecera / firma de un método
void myMethod();
Estructura
-
Declaración
Interface-
Debe empezar con la letra mayúscula I y el nombre de la clase que vayamos a usar
- Ejemplo : IControlador , IConnector , IBase , IRemote , IDataBaseLocal , IRoot
-
// Definición de una interfaz
public interface <NombreInterface> {
// Código de la interface ...
}
Campos / Atributos
-
Las
interfacespermiten definir e implementarCONSTANTES-
Atributos
públicos,estáticosyfinales -
CONSTANTES
-
Ejemplo
public static final int PI = 3.14159265358979323846;
-
-
Métodos
Se declaran públicos
-
Sin la implementación o sin el bloque de código
-
Solo la
declaración/signaturadelmétodo- Ejemplo
// Definición firma / cabecera de un metodo abstracto en una Interfaz public int getCalcularPI(int x , int y );
-
-
Pueden ser :
-
abstractos- No hace falta añadirle el modificador
abstractporque se sobrentiende y no necesitan ser implementarlos
// Cabecera/Firma de un método abstracto sin implementación void metodoAbstracto(); - No hace falta añadirle el modificador
-
Son elementos del tipo abstracto
“El Método Te Dice Que Hacer pero No Como Hacerlo”
-
Desde la versión de
Java 8es posible declararmétodos defaultymétodos estáticos- Contienen una implementación
predeterminada o preestablecidadentro de lainterfaz
- Contienen una implementación
-
Tipo
default-
Métodos que se crean y se implementan dentro de la
interfaz -
Utiliza la palabra clave
"default"y lasignatura del método -
Se pueden ejecutar invocando el objeto de la clase que implemente la
interfazmediante la invocando al constructor de la clase en cuestión
// Método por defecto de la interfaz default void myDefaultMethod() { // Ejemplo : Código con la implementación System.out.println("Realizar acción / tarea "); } -
-
Tipo
estáticos-
Métodos que se crean y se implementan dentro de la
interfaz -
Se puede invocar el método a través de la implemementación de la interfaz
// Método estático con implementación static void metodoEstatico() { System.out.println("Este es un método estático"); } -
Permiten declarar
métodos estáticosigual que en lasclases concretas -
Contiene una implementación
preestablecida// Declarar método estático en una interfaz static void myStaticMethod() { // código de implementación aquí System.out.println("Realizar acción / tarea definida "); }
-
Ejemplos de código
// Definición de la Interfaz
public interface EjemploInterfaz {
// Método abstracto sin implementación
void metodoAbstracto();
// Método default con implementación
default void metodoDefault() {
System.out.println("Este es un método default");
}
// Método estático con implementación
static void metodoEstatico() {
System.out.println("Este es un método estático");
}
}
// Clase Concreta implementando la Interfaz
public class EjemploClase implements EjemploInterfaz {
// Implementación del método abstracto
public void metodoAbstracto() {
System.out.println("Este es un método abstracto implementado");
}
// No es necesario implementar el método default,
// ya que tiene una implementación por defecto en la interfaz
// No es necesario implementar el método estático,
// ya que se llama directamente desde la interfaz
public static void main(String[] args) {
// Creación de una instancia de la clase y llamada a los métodos[label](http://127.0.0.1:1123/sec-rpumzzfnlnqljhfpzivl/enterprise)
EjemploClase instancia = new EjemploClase();
instancia.metodoAbstracto(); // Salida: "Este es un método abstracto implementado"
instancia.metodoDefault(); // Salida: "Este es un método default"
EjemploInterfaz.metodoEstatico(); // Salida: "Este es un método estático"
}
}
-
Interfazproporcionan-
Un
mecanismo de encapsulaciónde los detalles de losmétodossin forzar alusuarioa utilizar laherencia-
Se define con la palabra clave
interface -
Los
métodosque lo componen solo tienen lasignatura/firmadel método en si- Salvo los
métodos defaultométodos estáticosode claseque si contienen la implementación
- Salvo los
-
-
-
Ejemplo
- Métodos
defaultyestáticosode clase
- Métodos
// Una interfaz en Java se define con la palabra clave "interface"
public interface MyInterface {
// Todas las variables declaradas en una interfaz son public, static y final por defecto
public static final int MY_INT = 0;
// Los métodos en una interfaz son abstractos por defecto, por lo que no es necesario especificar la palabra clave "abstract"
void myMethod();
// También es posible declarar métodos con una implementación predeterminada
// Estos métodos deben tener la palabra clave "default" y un cuerpo de método
default void myDefaultMethod() {
// código de implementación aquí
}
// También es posible declarar métodos estáticos en una interfaz
static void myStaticMethod() {
// código de implementación aquí
}
}
// Una clase puede implementar una interfaz usando la palabra clave "implements"
public class MyClass implements MyInterface {
// La clase debe proporcionar una implementación para todos los métodos abstractos de la interfaz
public void myMethod() {
// código de implementación aquí
}
// También puede usar la implementación predeterminada proporcionada por la interfaz o proporcionar una nueva implementación
public void myDefaultMethod() {
// nueva implementación aquí
}
}
Ejemplo de uso
-
Una
interfazpermite que unaclaseacceda a losmétodosydatosde otraclase -
Esto permite a las
clasesque implementen lainterfazproporcionar su propiaimplementaciónde losmétodosdefinidos en lainterfaz -
Las
interfacesson útiles porquepermitena losprogramadorescrear código el cual es másmodularyreutilizable
Interface interface = new ClaseImplementaInterface();
Ejemplo - Declaración
// Definición de Interface
public interface IControlador {
// CONSTANTE
private static final int ID_CONTROLADOR = 132435;
// Signatura de método
int getControlador();
// Signatura de procedimiento
void setControlador(Controlador controlador);
// Signatura de método
boolean isControlador(Controlador controlador);
}
Herencia Multiple
-
Una
interfazno tiene implementación como se explico anteriormente- No hay ningún
tipo de almacenamientoasociado alinterfazni tampoco hay nada que impida la combinación de variasinterfaces
- No hay ningún
-
En una
clase derivadano se está forzado a tener unaclase basesea estaabstractaoconcreta- Ss decir ; una sin
métodos abstractos
- Ss decir ; una sin
-
Si se heredadesde unaclasey no de unainterfazsolamente se puede heredar de una clase- El resto de los elementos base deben ser
interfaces
- El resto de los elementos base deben ser
-
Todos los nombres de la
interfacesse colocan después de la palabra claveimplementsy separados por comas
// Ejemplo de una clase que implementa dos interfaces
public class Bird implements Animal, Flyable
-
Se pueden tener tantos
interfacescomo se necesite y cada uno de ellos será un tipo independiente- Muestra una
clase concretacombinada con variosinterfacespara producir unanueva clase
- Muestra una
-
La
herencia múltiple- Se refiere a la capacidad de una
clasepara derivar demúltiples clases padre
- Se refiere a la capacidad de una
-
Las
clasessolo pueden tener unasola clase padre directapero pueden implementarmúltiples interfaceslo que le da algo de las características de laherencia múltiple
Ejemplo Herencia Multiple
- Tenemos las siguientes
clasesyinterfaces
// Definición de una Interfaz
public interface Animal {
// Define la cabecera de un metodo
public void makeSound();
}
// Definición de una Interfaz
public interface Flyable {
// Define la cabecera de un metodo
public void fly();
}
// Clase concreta que define dos interfaces
public class Bird implements Animal, Flyable {
public void makeSound() {
// Implementación código para hacer un sonido de pájaro
}
public void fly() {
// Implementación código para volar
}
}
-
Explicación
-
La
clase Birdimplementa ambasinterfacesAnimalyFlyable
-
Esto le permite tener los
métodos declaradosen ambasinterfacesy comportarse como unanimalque puede volar
-
-
La
herencia múltipleen Java se logra mediante laimplementacióndemúltiples interfacesdentro de unaclase concretalo que le permite tener laspropiedadesymétodosde cadainterfazy poderlos definir a sus necesidades o lógica de negocio
Consejo
-
La esencia de las
interfacesen la POO es diseñar sus nombres para que susinterfacesque terminen en-ablepara identificarlas mejor -
Ejemplo
-
Interface
Serializable -
Interface
Comparable<T>
-
Resumen
-
Una clase
abstractaoconcretaimplementa unainterfaceutilizará la palabra claseimplements -
Una
interfazes una herramienta que permite a los distintos componentes de un programa interactuar entre sí -
Los métodos
no contienenbloques de código dentro delcuerpoa excepción de losmétodos defaultyestáticos o de clase- Se usan para definir sólo las
"cabeceras/protocolos/cooperaciones"de losmétodosoconstantesque implementarán lasclases abstractaso lasclases concretasque los implementen
- Se usan para definir sólo las
Se utilizan para indicar que hacer pero no contienen la implementación en código salvo los métodos
defaultyde claseoestáticos
-
Las
clases concretasyclases abstractasque implementen lasinterfacesserán las que le añadan el código con lalógica de negocioo el funcionamiento de losmétodos abstractosque se invoquen dentro de ellas-
Las
interfacesno puedencrearoinstanciar objetosdentro de la propiainterface- Sólo pueden implementar las
clases concretaslas cuales hereden de ellas losmétodosmediante el modificadorimplements
- Sólo pueden implementar las
-
-
Una clase del
tipo abstractooconcretano tiene límite a la hora de recibirinterfaces
Recuerda
Interface
Se utiliza como previsión de lo que podremos hacer de cara al futuro en nuestra aplicación mediante las clases que hereden de las Interfaces que creamos o invoquemos dentro de ella
Deja un comentario