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

Interface

Estava estudando interface e me surgiu uma dúvida no código abaixo :

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

            Autenticavel referencia = new Cliente();

            Gerente g1 = new Gerente();
            g1.setNome("Marco");
            g1.setCpf("235568413");
            g1.setSalario(5000.0);

            System.out.println(g1.getNome());
            System.out.println(g1.getCpf());
            System.out.println(g1.getSalario());
            System.out.println(g1.getBonificacao());

A parte do new Cliente usando como referencia a interface que ele assina ( Autenticavel referencia = new Cliente() ) , qual seria a real vantagem de criar o objeto usando esse tipo de referencia, e se muda algo no desenvolvimento do código.

2 respostas
solução!

Olá Gabriel, tudo certo?

Essa é uma vantagem do polimorfismo. Este código é bem simples e estático, mas imagina que ao criar uma variável de um certo tipo, que neste caso é uma interface. Essa variável pode apontar para qualquer referência de qualquer tipo que implemente essa interface.

Pode ser que você tenha uma função que busque alguma informação no banco de dados e retorne informações sobre alguém que seja Autenticavel. Você pode colocar a interface como o tipo do retorno dessa função, que irá retornar tanto um Cliente quanto um FuncionarioAutenticavel.

No geral é isso. Você cria uma variável que é de um tipo mais genérico na hierarquia e essa variável pode apontar para qualquer objeto mais específico nesta hierarquia.

O mesmo ocorre com Funcionario, uma variável desse tipo pode receber um Gerente, um Designer, um Coordenador ou qualquer outro tipo que estenda de Funcionario.

Em códigos dinâmicos facilita bastante, principalmente quando alguns tipos de retornos diferentes (mas que implementam uma mesma interface ou estendem uma mesma classe) são possíveis.

Espero ter ajudado!

top mano, vlw.