4.12. Sintaxe básica de Java: Interfaces

Página 16

Interfaces em Java são um recurso fundamental que permite definir um contrato que as classes podem implementar. Elas são uma forma de alcançar a abstração em Java, e são cruciais para o design de software, especialmente quando se trata de grandes sistemas e frameworks. Ao aprender Java, compreender interfaces é essencial para avançar para programação de nível intermediário e avançado.

Conceito de Interface

Uma interface é uma coleção de métodos abstratos e constantes estáticas. Métodos abstratos são aqueles que são declarados sem uma implementação. Quando uma classe implementa uma interface, ela deve fornecer implementações concretas para todos os métodos abstratos declarados na interface. Isso garante que a classe segue o "contrato" estabelecido pela interface.

Declaração de Interface

Para declarar uma interface em Java, você usa a palavra-chave interface. Aqui está um exemplo simples:

public interface Vehicle {
    int MAX_SPEED = 120; // constante estática
    void start(); // método abstrato
    void stop(); // método abstrato
    void accelerate(int speed); // método abstrato
}

Note que os métodos dentro de uma interface são implicitamente públicos e abstratos, então você não precisa especificar esses modificadores. As constantes são public, static e final por definição.

Implementando Interfaces

Quando uma classe implementa uma interface, ela usa a palavra-chave implements. Aqui está um exemplo de uma classe que implementa a interface Vehicle:

public class Car implements Vehicle {
    public void start() {
        // implementação do método start
    }
    
    public void stop() {
        // implementação do método stop
    }
    
    public void accelerate(int speed) {
        // implementação do método accelerate
    }
}

Se uma classe não fornecer implementações para todos os métodos abstratos da interface, ela deve ser declarada como abstrata.

Interfaces e Herança

Uma das grandes vantagens das interfaces é que elas podem ser usadas para simular herança múltipla, algo que não é possível com classes em Java. Uma classe pode implementar várias interfaces, separando-as com vírgulas:

public class ElectricCar implements Vehicle, EcoFriendly {
    // implementação dos métodos de Vehicle e EcoFriendly
}

Isso permite que a classe ElectricCar tenha comportamentos definidos por múltiplas interfaces.

Default Methods

A partir do Java 8, interfaces podem ter métodos default, que têm uma implementação padrão. Isso permite que novos métodos sejam adicionados a interfaces sem quebrar as classes que as implementam. Por exemplo:

public interface Vehicle {
    // métodos abstratos
    
    default void turnAlarmOn() {
        // implementação padrão do método turnAlarmOn
    }
    
    default void turnAlarmOff() {
        // implementação padrão do método turnAlarmOff
    }
}

Classes que implementam a interface Vehicle podem optar por usar essas implementações padrão ou fornecer suas próprias.

Static Methods

Interfaces também podem ter métodos estáticos. Estes são métodos que podem ser chamados no nome da interface, sem a necessidade de uma instância:

public interface Vehicle {
    // métodos abstratos e default
    
    static String getVehicleType() {
        return "Unknown Vehicle Type";
    }
}

Este método pode ser chamado assim: String type = Vehicle.getVehicleType();

Functional Interfaces

Uma interface funcional é uma interface que contém exatamente um método abstrato. Elas são usadas como base para expressões lambda e referências de método. O Java 8 introduziu a anotação @FunctionalInterface para indicar que uma interface é destinada a ser uma interface funcional:

@FunctionalInterface
public interface SimpleFunctionalInterface {
    void execute();
}

Essa anotação não é obrigatória, mas ajuda a garantir que a interface mantenha apenas um método abstrato.

Conclusão

Interfaces são uma peça fundamental na programação Java, permitindo a criação de contratos robustos, promovendo a abstração e facilitando a manutenção e a expansão do código. Ao implementar interfaces, as classes podem se tornar mais modulares e intercambiáveis, o que é uma vantagem significativa em design de software. Aprender a usar interfaces corretamente é um passo essencial para se tornar um programador Java competente e está no cerne de muitos padrões de design avançados em programação orientada a objetos.

Ahora responde el ejercicio sobre el contenido:

_Qual das seguintes afirmações sobre interfaces em Java é correta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Siguiente página del libro electrónico gratuito:

174.13. Sintaxe básica de Java: Tratamento de Exceções (try, catch, finally, throw, throws)

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.