Interfaces
Una interfaz es un tipo especial de clase que permite realizar un
conjunto de declaraciones de métodos sin implementación. En una
interfaz tambien se pueden definir constantes que son implicitamente
public, static y sin icializarse en la declaración.
debe incluir la sentencia “implements” la cual indica que implementa
la interfaz. La sintaxis es la siguiente:
public interface MiInterfaz {
...
}
En Java, una interfaz (interface) es un tipo de referencia que se utiliza
para declarar un conjunto de métodos que una clase debe
implementar. Las interfaces permiten la creación de un contrato que las
clases deben seguir, es decir, las clases que implementan una interfaz
deben proporcionar las implementaciones de todos los métodos de la
interfaz (a menos que sean métodos con una implementación
predeterminada, introducida en versiones posteriores de Java).
Conceptos clave de una interfaz en Java:
Métodos abstractos: Los métodos en una interfaz son implícitamente
abstractos (a partir de Java 8, los métodos pueden tener
implementaciones predeterminadas).
No se puede instanciar una interfaz: No puedes crear un objeto de tipo
interface. Se usa para que las clases la implementen.
Múltiples implementaciones: Una interfaz puede ser implementada por
múltiples clases, lo que permite un comportamiento similar al de la
herencia múltiple (lo cual no es posible en Java con clases).
Clases que implementan interfaces: Las clases que implementan una
interfaz deben proporcionar implementaciones para todos los métodos
abstractos de esa interfaz, a menos que la clase sea abstracta.
interface NombreDeInterfaz {
// Métodos abstractos (sin cuerpo)
void metodo1();
void metodo2();
int metodo3();
boolean comprobar();
}
// Interfaz
interface Animal {
void hacerSonido(); // Método abstracto
}
// Clase que implementa la interfaz Animal
class Perro implements Animal {
// Implementación del método hacerSonido() de la interfaz
public void hacerSonido() {
[Link]("El perro dice: Guau");
}
}
class Gato implements Animal {
// Implementación del método hacerSonido() de la interfaz
public void hacerSonido() {
[Link]("El gato dice: Miau");
}
}
*****************
public class Main {
public static void main(String[] args) {
// Crear objetos de las clases que implementan la interfaz Animal
Animal perro = new Perro();
Animal gato = new Gato();
// Llamar al método hacerSonido() de cada objeto
[Link](); // Salida: El perro dice: Guau
[Link](); // Salida: El gato dice: Miau
}
}
Explicación:
Interfaz Animal: Define el contrato que las clases deben cumplir (en
este caso, deben tener el método hacerSonido).
Clases Perro y Gato: Implementan la interfaz Animal y proporcionan su
propia implementación del método hacerSonido.
Uso en la clase Main: Creamos objetos de tipo Animal (que es una
interfaz) pero instanciamos las clases Perro y Gato, que implementan
esa interfaz. Luego llamamos al método hacerSonido de cada uno de
esos objetos.
Interfaces con Métodos Predeterminados (desde Java 8):
En Java 8, puedes proporcionar una implementación predeterminada
para un método dentro de la interfaz. Esto significa que las clases que
implementan la interfaz no tienen que implementar ese método si no
lo desean.
Ejemplo con métodos predeterminados:
// Interfaz con un método predeterminado
interface Vehiculo {
void arrancar(); // Método abstracto
// Método predeterminado
default void frenar() {
[Link]("El vehículo está frenando.");
}
}
class Coche implements Vehiculo {
// Implementación del método arrancar
public void arrancar() {
[Link]("El coche está arrancando.");
}
}
public class Main {
public static void main(String[] args) {
Coche miCoche = new Coche();
[Link](); // Salida: El coche está arrancando.
[Link](); // Salida: El vehículo está frenando. (Método
predeterminado)
}
}