so os objetos do tipo PessoaJuridica teriam os metodos especificados dentro da classe PessoaJuridica, e objetos do tipo PessoaFisica teriam os metodos especificados na classe PessoaFisica.PolimorfismoUm dos conceitos mais complicados de se entender, e tambem um dos mais importantes, e oPolimorfismo. O termo polimorfismo e originario do grego e significa "muitas formas".Na orientacao a objetos, isso significa que um mesmo tipo de objeto, sob certas condicoes, pode realizar acoes diferentes ao receber uma mesma mensagem. Ou seja, apenas olhando o codigo fonte nao sabemos exatamente qual sera a acao tomada pelo sistema, sendo que o proprio sistema e quem decide qual metodo sera executado, dependendo do contexto durante a execucao do programa.Desta forma, a mensagem "fale" enviada a um objeto da classe Animal pode ser interpretada de formas diferentes, dependendo do objeto em questao. Para que isto ocorra, e preciso que duas condicoes sejam satisfeitas: exista heranca de uma classe abstrata e casting (outras situacoes tambem podem resultar em polimorfismo, mas vamos nos centrar neste caso).Heranca nos ja definimos previamente, mas o que e uma classe abstrata? E o que e esse tal de casting?Uma classe abstrata e uma classe que representa uma colecao de caracteristicas presentes em varios tipos de objetos, mas que nao existe e nao pode existir isoladamente. Por exemplo, podemos criar uma classe abstrata chamada Animal. Um Animal tem diversas caracteristicas (atributos) e podem realizar diversas acoes (metodos) mas nao existe a possibilidade de criarmos objetos do tipo Animal. O que existem sao objetos das classes Cachorro, Gato, Papagaio, etc. Essas classes, estendem a classe Animal herdando todas as suas caracteristicas, e adicionando algumas coisas a mais. "Animal" e so uma entidade abstrata, apenas um conjunto de caracteristicas em comum, nada mais.Voce pode olhar para um objeto da classe Cachorro e falar "isto e um animal, pois estende a classe Animal", mas voce nunca vai ver um objeto que seja apenas da classe Animal, pois isso nao existe! E como eu olhar para voce e falar "voce e um objeto da classe SerVivo". Essa afirmacao esta correta, mas voce na verdade e um objeto da classe SerHumano, que por sua vez herda todas as caracteristicas da classe SerVivo (que por sua vez e uma classe abstrata, ja que nao podemos criar algo que seja apenas classificado como "SerVivo", sempre vamos classifica-lo de forma menos generica).Resumindo: uma classe abstrata e um conjunto de informacoes a respeito de uma colecao de outras classes. Uma classe abstrata sozinha e completamente inutil, ja que nao podemos instanciar um objeto desta classe, podemos apenas instanciar objetos de classes que estendem a classe abstrata inicial. Ela serve apenas para simplificar o sistema, juntando em um unico lugar diversas caracteristicas que sao comuns a um grupo de classes.Nunca esqueca disso: voce nunca vai poder criar um objeto do tipo de uma classe abstrata. Sempre crie objetos das classes que estendem esta classe abstrata.Ja o termo casting e utilizado quando nos forcamos o sistema a ver um certo objeto como sendo de um determinado tipo que nao e o seu tipo original. Supondo que temos a