🔹 Uma interface é como um contrato 📜 que define um conjunto de métodos que uma classe deve obrigatoriamente implementar.

🔹 Ela define o que fazer ✍️, mas não diz como fazer 🛠️ — isso fica a cargo da classe que a implementa.

🔹 Interfaces garantem que classes diferentes possam ser usadas de forma intercambiável 🔄, desde que implementem a mesma interface.


🥷 Exemplo: Interface Jutsu

No universo Naruto, ninjas usam várias técnicas (jutsus). A interface Jutsu define que qualquer ninja que use jutsu deve implementar o método usarJutsu().


// Interface que define um Jutsu
public interface Jutsu {
    void usarJutsu();
}


👊 Implementando Jutsu em Classes Ninja


// Naruto implementa Jutsu
public class Naruto implements Jutsu {
    @Override
    public void usarJutsu() {
        System.out.println("Naruto usa Rasengan!");
    }
}

// Sasuke implementa Jutsu
public class Sasuke implements Jutsu {
    @Override
    public void usarJutsu() {
        System.out.println("Sasuke usa Chidori!");
    }
}


🧪 Usando a interface para executar jutsus


public class TesteJutsu {
    public static void main(String[] args) {
        Jutsu naruto = new Naruto();
        Jutsu sasuke = new Sasuke();

        naruto.usarJutsu();  // Naruto usa Rasengan!
        sasuke.usarJutsu();  // Sasuke usa Chidori!
    }
}


Vantagens das Interfaces


⚔️ Exemplo Avançado: Múltiplas Interfaces