Porque usar uma referencia mais generica para um objeto? Ex. Funcionario func1 = new Gerente( ); Entendi que por herança o Gerente já teria acesso aos metodos da classe Funcionario, então não entendi bem por que instanciar assim.
Porque usar uma referencia mais generica para um objeto? Ex. Funcionario func1 = new Gerente( ); Entendi que por herança o Gerente já teria acesso aos metodos da classe Funcionario, então não entendi bem por que instanciar assim.
Olá Udson, tudo bem com você?
Nesse caso, acredito não haver uma vantagem clara em declarar usando o tipo mais genérico Funcionario. Geralmente quando queremos tirar vantagem do polimorfismo através da declaração de uma referência de tipo mais genérico, estamos usando uma interface como tipo mais genérico, como foi o caso do Autenticavel referencia = new Gerente();
.
Como o Nico mencionou no vídeo, podemos usar essa variável referencia
para apontar para qualquer classe que assina esse contrato (Autenticavel
). E isso facilita bastante a manutenção futuramente, caso precisemos mudar a implementação sem quebrar nada no código... em outras palavras, caso precisemos mudar o new Gerente()
para new Cliente()
por exemplo, podemos fazer isso sem problemas.
Eu falei um pouco mais sobre o assunto em outro tópico, vou deixar o link dele aqui: LINK. Recomendo avançar mais no curso antes de tentar entender cada detalhe da vantagem que esse tipo de prática trás, mas a ideia é mais ou menos essa: declarar a variável com um tipo mais genérico garante que mesmo mudando a implementação (objeto que você cria com o new
), tudo continuará funcionando.
O assunto é um pouco complexo no começo mas ele será discutido mais vezes no decorrer curso. Mas se tiver qualquer problema, por favor, me avise! ;)
Forte abraço e bons estudos!!