Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida sobre obrigatoriedade de implementação de métodos em classes que implementam interfaces.

No caso da classe abstrata Carro, que implementa a interface Veiculo, não seria obrigatório a implementação de todos os métodos da interface, tanto liga() quanto getMarcha()?

4 respostas

Fala ai Rodrigo, de boa ?

Cara sim, toda classe que implementa uma interface é obrigada a ter os métodos muito bem definidos, ou seja implementados.

Então, gostaria de entender o que ocorre no exercício referenciado na pergunta.

interface Veiculo {
    int getMarcha();
    void liga();
}

abstract class Carro implements Veiculo {
    public void liga()  {
        System.out.println("ligado!");
    }
}

class CarroConcreto extends Carro implements Veiculo {
    public int getMarcha() {
        return 1;
    }
}

Segunda a resposta, o código compilaria sem problemas.

solução!

Fala ai Rodrigo, de boa ?

Entendi agora o cenário, não havia entendido antes.

Nesse caso o código realmente compila, devido a classe Carro ser abstrata você garante que ninguém vai instanciar-la, por isso os métodos da interface não precisam ser implementados, contudo, no momento que você criar uma classe concreta todos os métodos, tanto da interface, quanto da classe abstrata necessariamente precisam ser implementadas.

Dúvida esclarecida, obrigado.