Introducción
En Java, una interfaz es una referencia tipo que es similar a una clase, pero solo puede contener métodos abstractos, métodos predeterminados, métodos estáticos y constantes. Las interfaces no pueden contener implementaciones de métodos (excepto métodos predeterminados y estáticos). Las interfaces son una forma de lograr la abstracción y la herencia múltiple en Java.
Conceptos Clave
- Definición de una Interfaz: Una interfaz se define utilizando la palabra clave
interface
. - Métodos Abstractos: Métodos que no tienen cuerpo y deben ser implementados por las clases que implementan la interfaz.
- Implementación de una Interfaz: Una clase implementa una interfaz utilizando la palabra clave
implements
. - Herencia Múltiple: Una clase puede implementar múltiples interfaces, lo que permite una forma de herencia múltiple.
- Métodos Predeterminados y Estáticos: Desde Java 8, las interfaces pueden contener métodos predeterminados y estáticos con implementación.
Definición de una Interfaz
En este ejemplo, Animal
es una interfaz con dos métodos abstractos: eat
y sleep
.
Implementación de una Interfaz
public class Dog implements Animal { @Override public void eat() { System.out.println("Dog is eating"); } @Override public void sleep() { System.out.println("Dog is sleeping"); } }
Aquí, la clase Dog
implementa la interfaz Animal
y proporciona las implementaciones de los métodos eat
y sleep
.
Métodos Predeterminados y Estáticos
Desde Java 8, las interfaces pueden tener métodos predeterminados y estáticos.
Método Predeterminado
public interface Animal { void eat(); void sleep(); default void run() { System.out.println("Animal is running"); } }
Método Estático
public interface Animal { void eat(); void sleep(); static void breathe() { System.out.println("Animal is breathing"); } }
Ejemplo Completo
public interface Animal { void eat(); void sleep(); default void run() { System.out.println("Animal is running"); } static void breathe() { System.out.println("Animal is breathing"); } } public class Dog implements Animal { @Override public void eat() { System.out.println("Dog is eating"); } @Override public void sleep() { System.out.println("Dog is sleeping"); } public static void main(String[] args) { Dog dog = new Dog(); dog.eat(); dog.sleep(); dog.run(); Animal.breathe(); } }
Explicación del Código
- Definición de la Interfaz
Animal
: Contiene dos métodos abstractos (eat
ysleep
), un método predeterminado (run
) y un método estático (breathe
). - Implementación de la Interfaz en la Clase
Dog
: La claseDog
implementa los métodoseat
ysleep
. - Uso de Métodos Predeterminados y Estáticos: En el método
main
, se crea una instancia deDog
y se llaman los métodoseat
,sleep
,run
ybreathe
.
Ejercicios Prácticos
Ejercicio 1
Descripción: Define una interfaz Vehicle
con métodos start
y stop
. Implementa esta interfaz en una clase Car
.
Solución:
public interface Vehicle { void start(); void stop(); } public class Car implements Vehicle { @Override public void start() { System.out.println("Car is starting"); } @Override public void stop() { System.out.println("Car is stopping"); } public static void main(String[] args) { Car car = new Car(); car.start(); car.stop(); } }
Ejercicio 2
Descripción: Añade un método predeterminado honk
a la interfaz Vehicle
que imprima "Vehicle is honking". Llama a este método desde la clase Car
.
Solución:
public interface Vehicle { void start(); void stop(); default void honk() { System.out.println("Vehicle is honking"); } } public class Car implements Vehicle { @Override public void start() { System.out.println("Car is starting"); } @Override public void stop() { System.out.println("Car is stopping"); } public static void main(String[] args) { Car car = new Car(); car.start(); car.stop(); car.honk(); } }
Resumen
En esta sección, hemos aprendido sobre las interfaces en Java, cómo definirlas y cómo implementarlas en clases. También hemos explorado los métodos predeterminados y estáticos introducidos en Java 8. Las interfaces son una herramienta poderosa para lograr la abstracción y la herencia múltiple en Java. Asegúrate de practicar los ejercicios para reforzar tu comprensión de estos conceptos.
Curso de Programación en Java
Módulo 1: Introducción a Java
- Introducción a Java
- Configuración del Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
- Operadores
Módulo 2: Flujo de Control
Módulo 3: Programación Orientada a Objetos
- Introducción a la POO
- Clases y Objetos
- Métodos
- Constructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Programación Orientada a Objetos Avanzada
Módulo 5: Estructuras de Datos y Colecciones
Módulo 6: Manejo de Excepciones
- Introducción a las Excepciones
- Bloque Try-Catch
- Throw y Throws
- Excepciones Personalizadas
- Bloque Finally
Módulo 7: Entrada/Salida de Archivos
- Lectura de Archivos
- Escritura de Archivos
- Flujos de Archivos
- BufferedReader y BufferedWriter
- Serialización
Módulo 8: Multihilo y Concurrencia
- Introducción al Multihilo
- Creación de Hilos
- Ciclo de Vida de un Hilo
- Sincronización
- Utilidades de Concurrencia
Módulo 9: Redes
- Introducción a las Redes
- Sockets
- ServerSocket
- DatagramSocket y DatagramPacket
- URL y HttpURLConnection