Menu
Coddy logo textTech

Introducción a las Interfaces

Parte de la sección Programación Orientada a Objetos del Journey de Java de Coddy. Lección 34 de 87.

Has visto cómo las clases abstractas definen contratos que las subclases deben seguir. Pero ¿qué ocurre si quieres que una clase siga varios contratos? Java no permite que una clase extienda varias clases, pero resuelve este problema con interfaces.

Una interfaz es un contrato que define lo que una clase puede hacer, sin especificar cómo lo hace. A diferencia de las clases abstractas, las interfaces contienen únicamente firmas de métodos (de forma predeterminada), sin implementación:

public interface Drawable {
    void draw();
}

public interface Resizable {
    void resize(int width, int height);
}

Piensa en una interfaz como una promesa. Cuando una clase implementa una interfaz, promete proporcionar implementaciones para todos los métodos declarados en esa interfaz. La interfaz define la capacidad, y la clase proporciona el comportamiento.

Las interfaces se declaran utilizando la palabra clave interface en lugar de class. Todos los métodos de una interfaz son implícitamente public y abstract, por lo que no necesitas escribir esas palabras clave:

public interface Playable {
    void play();    // implícitamente public abstract
    void pause();
    void stop();
}

Las interfaces también pueden declarar constantes, que son implícitamente public static final:

public interface GameConstants {
    int MAX_PLAYERS = 4;  // implícitamente public static final
}

En la próxima lección, aprenderás cómo las clases implementan interfaces usando la palabra clave implements.

challenge icon

Desafío

Fácil

Construyamos un sistema de control de dispositivos definiendo interfaces que describan lo que pueden hacer distintos dispositivos. Este desafío se centra en crear interfaces: los contratos que definen capacidades sin especificar cómo funcionan.

Organizarás tu código en tres archivos:

  • Switchable.java: Crea una interfaz que defina qué significa que un dispositivo sea conmutable. Cualquier dispositivo conmutable debería poder encenderse y apagarse. Declara dos métodos: turnOn() y turnOff(). Recuerda que los métodos de una interfaz son implícitamente públicos y abstractos, por lo que solo necesitas las firmas de los métodos.
  • Adjustable.java: Crea otra interfaz que defina qué significa que un dispositivo sea ajustable. Un dispositivo ajustable debería poder establecer su nivel. Declara un método setLevel(int level). Incluye también una constante MAX_LEVEL con un valor de 100: recuerda que las constantes en las interfaces son implícitamente public static final.
  • Main.java: Demuestra que tus interfaces están definidas correctamente imprimiendo información sobre ellas. Recibirás una entrada: un valor de nivel (int). Imprime las siguientes tres líneas:
    • Switchable methods: turnOn, turnOff
    • Adjustable methods: setLevel
    • Max level constant: [MAX_LEVEL value] (accede a la constante desde la interfaz Adjustable)
    Después, imprime: Setting level to: [input level]

Recibirás una entrada: un valor de nivel (int).

Este desafío se centra exclusivamente en definir interfaces: los planos que describen capacidades. En la próxima lección, aprenderás cómo las clases implementan realmente estas interfaces para proporcionar el comportamiento real.

Pruébalo tú mismo

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int level = scanner.nextInt();
        
        // TODO: Imprime información sobre las interfaces
        // Print: "Switchable methods: turnOn, turnOff"
        // Print: "Adjustable methods: setLevel"
        // Print: "Max level constant: " followed by Adjustable.MAX_LEVEL
        // Print: "Setting level to: " followed by the input level
        
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Java online