Java - Interface
Concepto
-
Interfaz
es unaClase Abstracta Pura
-
Todos los
métodos
que 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
interfaces
permiten definir e implementarCONSTANTES
-
Atributos
públicos
,estáticos
yfinales
-
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/signatura
delmé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
abstract
porque 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 8
es posible declararmétodos default
ymétodos estáticos
- Contienen una implementación
predeterminada o preestablecida
dentro 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
interfaz
mediante 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áticos
igual 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"
}
}
-
Interfaz
proporcionan-
Un
mecanismo de encapsulación
de los detalles de losmétodos
sin forzar alusuario
a utilizar laherencia
-
Se define con la palabra clave
interface
-
Los
métodos
que lo componen solo tienen lasignatura/firma
del método en si- Salvo los
métodos default
ométodos estáticos
ode clase
que si contienen la implementación
- Salvo los
-
-
-
Ejemplo
- Métodos
default
yestáticos
ode 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
interfaz
permite que unaclase
acceda a losmétodos
ydatos
de otraclase
-
Esto permite a las
clases
que implementen lainterfaz
proporcionar su propiaimplementación
de losmétodos
definidos en lainterfaz
-
Las
interfaces
son útiles porquepermiten
a losprogramadores
crear código el cual es másmodular
yreutilizable
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
interfaz
no tiene implementación como se explico anteriormente- No hay ningún
tipo de almacenamiento
asociado alinterfaz
ni tampoco hay nada que impida la combinación de variasinterfaces
- No hay ningún
-
En una
clase derivada
no se está forzado a tener unaclase base
sea estaabstracta
oconcreta
- Ss decir ; una sin
métodos abstractos
- Ss decir ; una sin
-
Si se hereda
desde unaclase
y no de unainterfaz
solamente 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
interfaces
se colocan después de la palabra claveimplements
y separados por comas
// Ejemplo de una clase que implementa dos interfaces
public class Bird implements Animal, Flyable
-
Se pueden tener tantos
interfaces
como se necesite y cada uno de ellos será un tipo independiente- Muestra una
clase concreta
combinada con variosinterfaces
para producir unanueva clase
- Muestra una
-
La
herencia múltiple
- Se refiere a la capacidad de una
clase
para derivar demúltiples clases padre
- Se refiere a la capacidad de una
-
Las
clases
solo pueden tener unasola clase padre directa
pero pueden implementarmúltiples interfaces
lo que le da algo de las características de laherencia múltiple
Ejemplo Herencia Multiple
- Tenemos las siguientes
clases
yinterfaces
// 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 Bird
implementa ambasinterfaces
Animal
yFlyable
-
Esto le permite tener los
métodos declarados
en ambasinterfaces
y comportarse como unanimal
que puede volar
-
-
La
herencia múltiple
en Java se logra mediante laimplementación
demúltiples interfaces
dentro de unaclase concreta
lo que le permite tener laspropiedades
ymétodos
de cadainterfaz
y poderlos definir a sus necesidades o lógica de negocio
Consejo
-
La esencia de las
interfaces
en la POO es diseñar sus nombres para que susinterfaces
que terminen en-able
para identificarlas mejor -
Ejemplo
-
Interface
Serializable
-
Interface
Comparable<T>
-
Resumen
-
Una clase
abstracta
oconcreta
implementa unainterface
utilizará la palabra claseimplements
-
Una
interfaz
es una herramienta que permite a los distintos componentes de un programa interactuar entre sí -
Los métodos
no contienen
bloques de código dentro delcuerpo
a excepción de losmétodos default
yestáticos o de clase
- Se usan para definir sólo las
"cabeceras/protocolos/cooperaciones"
de losmétodos
oconstantes
que implementarán lasclases abstractas
o lasclases concretas
que 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
default
yde clase
oestáticos
-
Las
clases concretas
yclases abstractas
que implementen lasinterfaces
serán las que le añadan el código con lalógica de negocio
o el funcionamiento de losmétodos abstractos
que se invoquen dentro de ellas-
Las
interfaces
no puedencrear
oinstanciar objetos
dentro de la propiainterface
- Sólo pueden implementar las
clases concretas
las cuales hereden de ellas losmétodos
mediante el modificadorimplements
- Sólo pueden implementar las
-
-
Una clase del
tipo abstracto
oconcreta
no 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