Pular para o conteúdo principal
Documentos
Palavras-chave JavaMatrizes JavaProgramação orientada a objetos em JavaManuseio de arquivos JavaIntrodução ao JavaNoções básicas da linguagem Java

palavra-chave interface em Java

A palavra-chave interface em Java é usada para declarar um tipo especial de classe que contém apenas métodos abstratos, métodos padrão, métodos estáticos e variáveis finais. As interfaces oferecem uma maneira de obter abstração e herança múltipla em Java.

Uso

As interfaces são usadas para especificar um conjunto de métodos que uma classe deve implementar. Eles são particularmente úteis para definir um contrato ao qual várias classes podem aderir, garantindo que elas forneçam funcionalidades específicas.

Sintaxe

interface InterfaceName {
    // constant fields
    // abstract methods
    // default methods
    // static methods
}
  • InterfaceName: O nome da interface.
  • Campos constantes: Os campos declarados em uma interface são implicitamente public, static e final.
  • Métodos abstratos: Métodos sem um corpo que devem ser implementados pelas classes que implementam a interface.
  • Métodos padrão: Métodos com um corpo que fornecem uma implementação padrão.
  • Métodos estáticos: Métodos com um corpo que pertence à própria classe de interface.

Exemplos

Exemplo 1: Interface básica

interface Animal {
    void eat();
    void sleep();
}

class Dog implements Animal {
    public void eat() {
        System.out.println("Dog is eating");
    }

    public void sleep() {
        System.out.println("Dog is sleeping");
    }
}

public class InterfaceExample {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();
        dog.sleep();
    }
}

Neste exemplo, a interface Animal declara dois métodos abstratos: eat e sleep. A classe Dog implementa a interface Animal e fornece implementações concretas para esses métodos.

Exemplo 2: Interface com método padrão

interface Vehicle {
    void start();
    default void stop() {
        System.out.println("Vehicle is stopping");
    }
}

class Car implements Vehicle {
    public void start() {
        System.out.println("Car is starting");
    }
}

public class DefaultMethodExample {
    public static void main(String[] args) {
        Car car = new Car();
        car.start();
        car.stop();
    }
}

Aqui, a interface Vehicle inclui um método padrão stop. A classe Car implementa a interface Vehicle e fornece uma implementação para o método start. O método padrão stop é herdado e pode ser usado como está.

Exemplo 3: Interface com método estático

interface Calculator {
    static int add(int a, int b) {
        return a + b;
    }
}

public class StaticMethodExample {
    public static void main(String[] args) {
        int result = Calculator.add(5, 3);
        System.out.println("Sum: " + result);
    }
}

Este exemplo demonstra uma interface Calculator com um método estático add. O método estático pode ser chamado diretamente usando o nome da interface sem a necessidade de uma instância.

Dicas e práticas recomendadas

  • Responsabilidade única: Mantenha as interfaces concentradas em uma única responsabilidade. Isso facilita a compreensão e a implementação.
  • Convenções de nomenclatura: Use nomes significativos para as interfaces. Geralmente, os nomes das interfaces são adjetivos ou substantivos que descrevem o comportamento ou a função, como Runnable, Serializable, ou List.
  • Evite a sobrecarga: Evite sobrecarregar métodos em interfaces para manter a clareza e a simplicidade.
  • Use os métodos padrão com sabedoria: Os métodos padrão podem ser úteis para proporcionar compatibilidade com versões anteriores, mas use-os com moderação para evitar complicar a interface.
  • Interfaces de documentos: Documente claramente a finalidade e o comportamento esperado de cada método na interface para orientar os implementadores.
  • Prefira a composição à herança: Use interfaces para definir recursos e prefira a composição à herança para obter um código flexível e de fácil manutenção.

Conceitos adicionais

Várias interfaces

Uma classe em Java pode implementar várias interfaces, o que permite que ela herde os métodos abstratos de todas as interfaces implementadas.

interface Movable {
    void move();
}

interface Stoppable {
    void stop();
}

class Robot implements Movable, Stoppable {
    public void move() {
        System.out.println("Robot is moving");
    }

    public void stop() {
        System.out.println("Robot has stopped");
    }
}

public class MultipleInterfacesExample {
    public static void main(String[] args) {
        Robot robot = new Robot();
        robot.move();
        robot.stop();
    }
}

Neste exemplo, a classe Robot implementa as interfaces Movable e Stoppable, fornecendo implementações para os métodos definidos em ambas as interfaces.

Learn Java Essentials

Desenvolva suas habilidades em Java desde o início e domine os conceitos de programação.
Comece a aprender de graça