OOP - Interfaces
Um poderoso companheiro da Herança (saiba mais...) é o uso de Interfaces. A interface é uma espécie de superclasse 100% abstract que define os métodos que uma subclasse deve suportar, mas não como esse suporte deve ser implementado. Em outras palavras, uma interface é um tipo de contrato que diz o que deve ser implementado e codificado, como essa implementação será feita fica a cargo da subclasse.
Exemplo:
Uma superclasse (interface) Carro declara que todas as subclasses devam implementar o método acelerar(), porem não diz como. A implementação de como funcionaria a lógica do método acelerar() fica a cargo das subclasses. No caso uma classe denominada Ferrari que é um tipo de Carro implementaria o método acelerar() diferente de outra classe denominada Corcel que também é um tipo de Carro. Ambas as classes derivam de Carro, logo devem implementar o método acelerar().
Sempre que implementar uma interface é obrigatório definir ou codificar os métodos herdados, caso contrário devemos mante-lo abstract.
A diferença entre classes abstratas e interfaces em Java é que uma subclasse pode herdar de uma única classe (abstrata ou não). Enquanto qualquer classe pode implementar várias interfaces simultaneamente. Sendo um mecanismo simplificado de "herança múltipla" em Java.
Exemplo:
Uma superclasse (interface) Carro declara que todas as subclasses devam implementar o método acelerar(), porem não diz como. A implementação de como funcionaria a lógica do método acelerar() fica a cargo das subclasses. No caso uma classe denominada Ferrari que é um tipo de Carro implementaria o método acelerar() diferente de outra classe denominada Corcel que também é um tipo de Carro. Ambas as classes derivam de Carro, logo devem implementar o método acelerar().
Sempre que implementar uma interface é obrigatório definir ou codificar os métodos herdados, caso contrário devemos mante-lo abstract.
A diferença entre classes abstratas e interfaces em Java é que uma subclasse pode herdar de uma única classe (abstrata ou não). Enquanto qualquer classe pode implementar várias interfaces simultaneamente. Sendo um mecanismo simplificado de "herança múltipla" em Java.