Se minha classe é implements
uma interface, posso dizer que estou seguindo a herança? Eu sei que quando uma classe é extends
outra, então é herança.
java
terminology
interfaces
inheritance
definition
RajeeV VenkaT
fonte
fonte
Respostas:
ATUALIZAÇÃO: Revisei esta resposta. Vários pontos positivos foram levantados nos comentários que mereciam ser destacados.
Não está totalmente claro o que você quer dizer com "seguindo herança". Vamos fazer uma pergunta um pouco diferente?
Estes são sutilmente diferentes. Isso é lamentável, porque é confuso.
A confusão pode surgir porque as pessoas pensam na herança como um mecanismo para compartilhar detalhes de implementação. Embora seja esse mecanismo, esse mecanismo funciona compartilhando membros . Esses membros não precisam ter implementações! Como veremos, eles podem ser abstratos.
Pessoalmente, ficaria mais feliz se as especificações Java e C # usassem uma palavra diferente de "herda" para descrever o relacionamento entre métodos e classes de interface, para evitar essa confusão. Mas eles não o fazem, e temos que argumentar com base nas especificações, não contra elas.
Sim, alguns são. Veja a seção 8.4.8 da especificação Java, que cito aqui para sua conveniência.
Se você diz que uma classe implementa uma interface, a classe herda os métodos abstrato e padrão dessa interface . (É claro que omiti as condições a seguir; consulte a especificação para obter detalhes. Em particular, uma classe que implementa um membro de uma interface não é considerada como tendo herdado esse membro. Novamente, isso é confuso? Sim.)
Normalmente, diríamos que uma classe implementa uma interface. Como observado acima, uma classe pode herdar membros de uma interface e ainda assim não é dito que ela herdou da interface. O que é confuso, sim.
Normalmente não. Esse tipo de análise restrita da especificação é mais útil para escritores de compiladores do que para desenvolvedores de linha de negócios. É mais importante entender quando usar uma interface do que obter uma definição precisa de "herda de".
fonte
java
isso esta é a resposta certa, a menos que o OP significava alguma outrajava
:-)Herança significa escrever uma nova subclasse para uma superclasse. Escrever uma nova classe em uma interface está implementando essa interface. (E escrever uma nova interface com base em uma antiga está estendendo essa interface.)
O único termo correto que se aplica a todas as três possibilidades é subtipagem . Nem todo subtipo é uma subclasse.
fonte
Com subclasses , você
Com interfaces , você preenche um contrato implementando os métodos declarados.
Essa é a maneira clássica de ver isso. Agora, com o Java 8, as interfaces se tornam uma mistura:
A implementação de uma interface cujos métodos todos têm implementações padrão ainda conta como 'implementar', ou melhor, como extensão? Eu não sabia dizer. Como esse caso é exagerado (isso realmente habilitou a herança múltipla sem estado), eu ainda usaria 'herança' apenas nas subclasses.
fonte