Olá, gostaria de saber se nesse código abaixo por exemplo:
Autenticavel autenticavel = new Gerente();
A variável autenticavel ganha os métodos que o gerente herda da classe funcionário tambem?
Olá, gostaria de saber se nesse código abaixo por exemplo:
Autenticavel autenticavel = new Gerente();
A variável autenticavel ganha os métodos que o gerente herda da classe funcionário tambem?
Opa Andre, tranquilo?
Nesse caso, não. O Java só enxerga o tipo da variável - que nesse caso é Autenticavel
, portanto a variável autenticavel
só vai poder usar os métodos sobrescritos da interface.
Em outras palavras, por baixo dos panos ele continua sendo um Gerente
, mas o Java em tempo de compilação não sabe disso e vai considerar ele como sendo apenas do tipo Autenticavel
.
Existem muitas vantagens em programar dessa forma, nesse momento do curso pode parecer complicado já que precisamos de mais alguns conhecimentos específicos para enxergar de fato as vantagens que programar "orientado a interfaces" traz para o nosso código.
Caso tenha interesse, vou deixar aqui dois artigos e uma entrevista(em inglês) que entram com mais detalhes no assunto:
Artigo da Alura:
POO: Interfaces e Implementações
Artigo do blog diogomatheus:
Entrevista com Erich Gamma, principal projetista do JUnit e do Eclipse:
Design Principles from Design Patterns
Se tiver qualquer dúvida é só avisar!
Abraços e bons estudos!!
Thiago, muito obrigado pela resposta rápida, clara e objetiva. Me ajudou muito, já estou lendo os artigos que me passou. Obrigado!
Disponha! E tudo bem não entender tudo que os artigos mencionam, muitas coisas só vão ficando claras na prática mesmo! :)