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

[Dúvida] Referência a um Objeto

Olá Boa tarde, como estão? pergunta a) quando faço referência a um objeto (exemplo: Filme f1 = FilmeDoPaulo; - exemplo dado na aula) estou usando polimorfismo? pergunta b) por que precisaria fazer uma referência a um objeto se já tenho ele?

obrigado, Mauricio G

2 respostas
solução!

Olá Maurício, tudo bem ?

Vou dividir a resposta para te ajudar

Explicação

No exemplo abaixo, você está apenas criando uma nova referência para o mesmo objeto filmeDoPaulo na memória.


Filme f1 = filmeDoPaulo;

Polimorfismo ocorre quando você tem uma referência de uma superclasse apontando para um objeto de uma subclasse, por exemplo:


Titulo t1 = new Filme("Dogville", 2003);

Aqui sim é polimorfismo, porque Titulo é a superclasse e Filme é a subclasse. A variável t1 pode apontar para objetos de diferentes subclasses de Titulo (como Filme ou Serie), e você pode chamar métodos que são definidos na superclasse e sobrepostos na subclasse.

De fato, vale ressaltar que se não soubessemos ou se estivessimos usando esse tipo atribuição de uma subclasse para uma superclasse ai sim estamos usando Polimorfismo

Amplicação

Vocẽ pode se perguntar, por que precisaria fazer uma referência a um objeto se já tenho ele?

  • Facilitar a leitura do código

  • Evitar repetir chamadas ou operações longas (Exemplo abaixo)

Filme filmeDoPaulo = buscaFilmeNoBanco("Dogville");
Filme f1 = filmeDoPaulo;
  • Passar o mesmo objeto para diferentes estruturas
public class Principal {

    public static void main(String[] args) {
        Filme filmeDoPaulo = new Filme("Dogville", 2003);
        filmeDoPaulo.avalia(10);
        Filme filmeFavorito = filmeDoPaulo;

     
        ArrayList<Filme> assistidos = new ArrayList<>();
        assistidos.add(filmeDoPaulo);

     
        ArrayList<Filme> recomendados = new ArrayList<>();
        if (filmeFavorito.getClassificacao() > 8) {
            recomendados.add(filmeFavorito);
        }

        System.out.println("Filmes recomendados:");
        for (Filme f : recomendados) {
            System.out.println(f.getNome());
        }
    }
}

No exemplo acima filmeDoPaulo e filmeFavorito apontam para o mesmo objeto na memória. Ter nomes diferentes ajuda a explicar o contexto de uso: um é o filme que o Paulo viu, o outro é a referência que usamos para recomendações.

Espero ter ajudado!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olá Breno, bom dia eu vou muito bem. Espero que esteja bem... Então, dado continuidade ao polimorfismo, e seguindo ao exemplo abaixo vamos ver se eu entendi:

Titulo t1 = new Filme("Dogville", 2003);

Então t1, pode pegar as propriedades e atributos (caso esteja disponível) do Objeto filme? é isso? por isso há polimorfismo.

obrigado, Mauricio G