Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Instanciação

Eu ainda não entendi a diferença/vantagem de instanciar um objeto de uma classe herdada passando como referência a classe mãe.

Ex:

Funcionario funcionario = new Funcionario(); ou Funcionario gerente = new Gerente();

Eu entendi o conceito de criar um método recebendo como parâmetro o tipo mais primitivo, mas ainda não entendi a diferença de ambas as instanciações, pois o instrutor usou a "convencional" no caso a Funcionario funcionario = new Funcionario();

1 resposta
solução!

Oie Michael, tudo bem contigo?

Não existe necessariamente uma vantagem de usar uma ou outra, mas existem diferenças entre os dois e caberá ao programador usar aquele que tiver como preferência, ou dependendo da situação, aquele que deve ser usado.

Ao fazermos:

Funcionario gerente = new Gerente();

Nós só conseguiremos usar os métodos da classe "Funcionario", aqueles especificamente criados na classe "Gerente" ficam inacessíveis nessa situação, a não ser que esteja sendo feito uma sobrescrita.

Agora quando fazemos:

Gerente gerente = new Gerente();

Temos acesso a todos os métodos, tanto aqueles herdados da classe "Funcionario" como aqueles criados especificamente na classe "Gerente".

Quando fazemos do primeiro jeito, geralmente só queremos mexer nos métodos herdados da classe "Funcionário", então limitamos o escopo para só termos acesso a eles, mas também daria para acessá-los do segundo jeito, então em uma situação onde queremos mexer nos métodos da superclasse, tanto faz qual opção é escolhida.

Agora se queremos acessar os métodos específicos criados na classe "Gerente", devemos obrigatoriamente usar a segunda opção, pois usando a primeira não teremos acesso a esses métodos.

Ficou um pouco mais claro agora?

Se tiver qualquer outra dúvida estarei por aqui :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software