caezar 0 Denunciar post Postado Maio 16, 2014 Pessoal creio ter entendido quase todo de polimorfismo, digo "quase" por somente um ponto que ainda tenho dúvidas. Supondo que tenha a classe Animal e uma classe Tigre, sei que Tigre é um Animal portanto entende a classe Animal. Até aí ok. Para criar um objeto Tigre faço assim: Tigre tigre = new Tigre(); Agora vem a dúvida: Vejo muito na net algo como isso: Animal tigre = new Tigre(); Sei que se Tigre é um Animal podemos fazer como acima, mas não entendo qual a vantagem prática de se criar o objeto da forma abaixo. Outro exemplo seria o ArrayList, que pelo o que me lembro herda List. Vejo muito os programadores escreverem desta forma: List<String> lista = new ArrayList(); Invés de: ArrayList<String> lista = new ArrayList(); Porque? Qual a vantagem prática de se usar a classe pai ao criar um objeto da classe filho? Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Maio 16, 2014 Então veja... Você quer um sistema de gestão de zoológico, e neste sistema você tem uma Lista de animais... Então, veja só que interessante: Animal chico = new Macaco(); Animal pantro = new Pantera(); Animal neymar = new Papagaio(); ArrayList<Animal> animais = new ArrayList<Animal>(); animais.add(chico); animais.add(pantro); animais.add(neymar); Percebe? E essa "brincadeira" pode ser mais complexa e cheia de possibilidades. Como, por exemplo, permitir que apenas Aves sejam colocadas em Gaiolas (método engaiolar(Ave ave)), enquanto as Jaulas ficam reservada para outros animais (método enjaular(Animal animal)). Isso tudo vai depende unico e exclusivamente do seu projeto. Espero que tenha conseguido iluminar o seu caminho. Compartilhar este post Link para o post Compartilhar em outros sites
caezar 0 Denunciar post Postado Maio 20, 2014 Conseguiu sim. Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites