Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

java 10 e polimofismo

Estive testando o código usando java 10 e percebi que poderia colocar o var em vez de Funcionario e ele continuaria funcionando perfeitamente inclusive funcionando o método autentica sem precisar fazer "((Gerente) g1)" qual são as vantagens e desvantagens do uso de var para polimorfia?


public class TesteReferencia {
    public static void main(String[] args) {

        var g1 = new Gerente();
        g1.setNome("Marcos");
        g1.setSalario(5000);
        g1.autentica(2222);

        Funcionario f = new Funcionario();
        f.setSalario(2000);

        EditorVideo ev = new EditorVideo();
        f.setSalario(2500);

        ControleBonificao controle = new ControleBonificao();
        controle.registra(g1);
        controle.registra(f);
        controle.registra(ev);

        System.out.println(controle.getSoma());
    }
}
4 respostas
solução!

Oi Matheus,

usa-se a palavra reservada var para declarar uma variável utilizando inferência de tipo. O que isso significa?

Esta é uma forma menos "verborragica" para declarações de variáveis locais, onde você deixa que o compilador infira qual o tipo da variável. É necessário inicializá-la (atribuir um valor ao instanciar) e não é possível usar essa novidade com retorno de métodos nem para armazenar métodos de referência.

Ou seja, ao invés de declarar assim:

Carro c = new Carro();

Você declara assim:

var c = new Carro();

Ou seja, o compilador vai inferir que você tem o mesmo tipo dos dois lados.

Para o uso do polimorfismo, você precisa continuar usando a variável da forma antiga, pois por inferência, o tipo da variável será sempre o mesmo do inicializador.

Espero ter ajudado!!

Obrigado!

Matheus, só lembrando que var só é válido em projetos com Java 9+. Java 8- não vai compilar.

Opa Gustavo, na realidade o var funciona no Java 10+