[Música] Olá pequeno gafanhoto seja bem-vindo a mais uma aula do seu curso em vídeo de programação orientada objeto uma aula conceitual meu nome é Gustavo Guanabara eu sou seu professor e agora a gente chegou na aula 12 a que é a aula conceitual e a gente vai falar sobre um assunto onde o nome é mais complicado do que entender o que que ele significa a gente vai falar sobre polimorfismo essa é a primeira aula que trata sobre o último Pilar você deve se lembrar a gente tem três pilares na programação orientada do objeto o encapsulamento
a gente já viu a herança também já vimos e agora o polimorfismo que é o último Pilar e a gente já se encaminha pro final desse curso que deu um trabalhão e Graças a vocês pequenos gafanhotos ele aconteceu até o finalzinho e antes de começar a aula eu gostaria de pedir que vocês continuem contribuindo com o projeto aqui embaixo ó no apoi PME bar cursem vídeo você vai escolher uma das faixas vai ver qual o tipo de recompensa que você vai poder receber você não vai fazer pela recompensa você vai fazer para poder ajudar o
projeto mas a gente é eternamente grato a todo mundo que pode colaborar e que pode ajudar com o curso em vídeo mas vamos falar sobre polimorfismo o nome polimorfismo é o nome mais difícil de você lembrar apesar de muitos alunos confundirem chamar de poliformismo não é poliformismo é polimorfismo na verdade isso é uma junção de duas palavras de dois termos a gente vai ter aqui ó o poli que significa muitas e morfo que significa formas Então são muitas formas de se fazer alguma coisa é mais uma explicação supernal que você pode aplicar para situações do
seu dia a dia vamos ver um exemplo aqui por exemplo quando você você acorda O que que você faz água na bara depende tem dia que eu levanto rápido o dia que eu tenho que trabalhar né eu levanto rápido tomo um banho escovo um dente tomo café adianto tudo e parto pro trabalho mas quando é domingo eu demoro um pouquinho mais para levantar o café da manhã já demora um pouquinho mais às vezes eu nem tomo café da manhã já junta com o almoço isso são várias formas de você acordar então o seu método de
acordar tem múltiplas formas de acontecer isso é polimorfismo mas dar uma olhada na descrição conceitual segundo a bibliografia que a gente tá utilizando polimorfismo permite que o mesmo nome represente vários comportamentos diferentes é basicamente o que eu acabei de falar o teu comportamento de acordar ele pode ser feito de quantas maneiras ah de várias maneiras polimorfo várias formas Então você tem um mesmo nome que é acordar só que você pode executar esse seu método de acordar de várias maneiras e esse é o conceito de polimorfismo eu não tenho nem mais o que falar muito o
que nós vamos ver agora é só uma explicação para detalhar isso de forma prática e de forma técnica mas antes de falar de polimorfismo de forma técnica eu preciso falar de assinatura todo método ele tem uma assinatura e você vai ter que identificar essa assinatura saber diferenciar assinaturas iguais e assinaturas diferentes porque o polimorfismo trata desses conceitos na sua essência basicamente a assinatura do método consiste em a quantidade e os tipos dos parâmetros então todo método recebe parâmetros então todo método ele tem a possibilidade de receber parâmetros alguns não recebem alguns recebem parâmetros a quantidade
e o tipo desses parâmetros identificam a sua assinatura D um exemplo aqui ó vou colocar aqui na tela Então você tem um método público calcular média para calcular média eu vou receber duas notas né N1 e n2 do tipo real e ele vai retornar o valor do tipo real essa definição aqui a gente já viu durante a aula de algoritmo E durante as aulas iniciais de programação orientada objeto nunca se esqueça a qualquer momento você pode clicar aqui em cima no izinho de interatividade e lá você vai ter acesso aos cursos de algoritmo aos cursos
de programação orientar objeto com Java com PHP e você vai poder se aperfeiçoar não adianta você cair de paraqueda numa aula e tentar entender ela se existem aulas anteriores e que são extremamente importantes Então o que tá aqui do lado é uma definição de uma de um método público né calcular a média que recebe dois parâmetros e retorna um valor real vou botar um outro exemplo aqui aqui embaixo para você dar uma olhada aqui olha só é o mesmo método né o mesmo nome cal média ele é um método ele é público também ele também
recebe dois parâmetros são reais e retorna um número inteiro aí eu pergunto a você esses dois métodos que estão aqui do lado eles têm a mesma assinatura sim ou não é só dar uma olhada na definição olha só a assinatura do método é a quantidade e os tipos dos parâmetros dá uma olhada na linha de cima calque média recebe N1 e n2 ambos reais e retorno real mas na definição ali de cima o tipo de retorno não entra no conceito de assinatura na segunda linha eu tenho calque média recebendo também dois valores reais só que
v1 e V2 não é N1 e n2 como de cima ele retorna O valor inteiro e você pode ficar na dúvida Ah ele não tem a mesma assinatura porque um retorna real o outro retorna inteiro aí é que você se engana esses dois métodos aqui tem exatamente a mesma assinatura isso porque o que é contado na assinatura é a quantidade e os tipos de parâmetros nas duas linhas eu tenho dois parâmetros eu recebo dois parâmetros e os dois são reais por mais que eles tenham nomes diferentes Isso é uma mesma assinatura é a quantidade e
o tipo dos parâmetros dá uma olhadinha quantos parâmetros Tem cada um dois dá uma olhadinha no tipo de cada um desses dois parâmetros real são iguais então é a mesma assinatura a você vai falar pô agora na bar mas para que que eu preciso saber disso aguarda pequeno gafanhoto já já você vai entender Por que você precisa di diferenciar assinaturas iguais e assinaturas diferentes antes vamos ver mais um exemplo aqui ó vou colocar aqui mais um calque média recebendo bimestre inteiro N1 real n2 real retornando real e aí esse daqui tem a mesma assinatura ou
assinaturas diferentes dos dois de cima a gente já viu que os dois de cima tem a mesma assinatura e o terceiro se você entendeu o conceito você sabe que o terceiro tem assinatura diferente esse terceiro é diferente dos outros dois isso porque ele recebe três parâmetros os outros só recebem dois e esses três parâmetros são inteiro real e real os outros dois são R re fal magora bar mas dos R re também estão nesse Mas ele tem o bimestre que é inteiro que tá diferenciando a assinatura Então nesse caso aqui o terceiro exemplo é uma
assinatura diferente dos dois de cima vamos ver mais um aqui ó mais um calque média recebendo N1 n2 N3 n4 do tipo real e retornando um tipo real Agora ficou mais fácil né são quatro parâmetros o de cima são três e o os dois de cima são dois parâmetros tem a quantidade diferente são tipos diferentes Então são assinaturas diferentes então o quarto exemplo ali é diferente do terceiro que por sua vez é diferente dos dois primeiros que são iguais mais um último exemplo aqui ó calcula a média média mínima média máxima R 2 a situação
que é caracter recebe bimestre que é inteiro e retorna um caracter esse Você já viu que é diferente de todas as outras Então nesse caso que tá aqui os dois primeiros métodos os dois de cima são assinaturas iguais entre eles e todos os outros de baixo são assinaturas diferentes e agora que você já sabe diferenciar as assinaturas a gente já pode começar a falar sobre os tipos de polimorfismo várias bibliografias citam vários tipos de polimorfismo Inclusive a bibliografia que eu utilizo cita quatro tipos de polimorfismo mas nós aqui nesse curso introdutório vamos trabalhar os dois
principais são os dois mais utilizados o primeiro polimorfismo é uma palavra que você já viu ó sobreposição polimorfismo de sobreposição é uma característica é um dos polimorfismos mais utilizados e a gente viu o iniciozinho dele na aula anterior quando a gente começou a aprender aquele comando sobrepor e essa aula essa primeira parte de polimorfismo é totalmente dedicada a esse tipo de polimorfismo o polimorfismo de sobreposição Mas eu também tenho um outro polimorfismo que também é muito comum que é o polimorfismo de sobrecarga o polimorfismo de sobrecarga é um pouco menos comum mas ele também existe
e também é muito útil nessa aula como eu disse a gente vai se focar no primeiro no de sobreposição e eu vou fazer o seguinte eu vou tirar essa tela lateral Tira aqui para mim a tela lateral por favor e coloca aqui para mim uma tela em baixo a gente vai utilizar essa tela de baixo porque ela é mais larga e a gente vai conseguir colocar um exemplo o exemplo que eu vou dar aqui ó é a classe animal essa classe seria uma classe abstrata ela vai cadastrar qualquer tipo de animal e ela vai ter
especializações Então eu tenho aqui ó de animal eu tenho mamífero réptil peixe e ave que seriam exatamente especializações da classe animal então todos eles erdam de animal exatamente como você tá vendo aqui embaixo e exatamente como a gente já viu em várias aulas inclusive principalmente nas aulas de herança vamos começar a enumerar aqui todos os atributos e métodos por exemplo pra classe animal eu tenho os atributos peso idade a quantidade de membros então por exemplo nós temos quatro membros né dois braços e duas pernas e nós temos também três métodos o método de se alimentar
o método de se locomover e o método de emitir som isso é nessa nossa representação simplificada aqui todo animal ele tem peso ele tem idade e ele tem membros e todo animal faz três coisas se alimenta se locomove e emite um som esses três métodos como você pode ver aqui embaixo eles são métodos abstratos Então a gente vai ter que definir essa classe como abstrata para ter métodos abstratos continuando aqui ó vamos ver mamífero mamífero eu também vou adicionar um atributo cor do pelo pro rtil eu vou adicionar também a cor da escama pro peixe
eu vou botar um atributo e um método a cor da escama e soltar bolhas todo peixe solta bolha e pra ave Eu também vou botar um atributo e um método toda ave ela tem a cor da pena e também faz um ninho é claro que isso aqui é um exemplo abstrato e eu espero que vocês lembrem que eu sou professor de informática então se eu errar algum conceito biológico me desculpem foi com as melhores das intenções então eu vou fazer o seguinte eu vou deixar essa tela aqui embaixo eu vou deixar esse diagrama um pseudo
diagrama de classes representado aqui embaixo e eu vou puxar aqui do lado a nossa tela de código então eu vou ficar mais apertado que o normal mas eu espero que você entenda direitinho então o diagrama tá aqui embaixo e eu vou colocar o código aqui do lado para poder criar o conceito desse diagrama que tá aqui e já já você vai conseguir entender Qual é o conceito de polimorfismo você é daqueles que se enrolou todo durante a a aula ou que já não tava mais com paciência quando o professor explicou fica calmao porque no garfanhoto
existe salvação pro seu caso e eu vou tentar te ajudar então vamos puxar o código aqui do lado e vamos começar então eu tenho aqui ó a classe abstrata animal para poder representar o animal aqui embaixo ele tem que ser uma classe abstrata porque eu tenho métodos abstratos Então sempre que eu tiver método abstrato numa classe essa classe também é abstrata lembrando apenas classe abstrata é aquela que não pode virar um objeto eu não consigo transformar essa classe em um objeto ela só vai servir para efeitos de herança eu vou colocar aqui os atributos peso
idade e membros todos eles eu coloquei como protegido para eu poder utilizar nas classes filhas Então já tá lá o peso real a idade inteira e os membros também inteiro vou colocar os métodos abstratos dá uma olhada aqui do lado todo método abstrato não é representado por meio de código então ele vai ter simplesmente o seu nome então eu vou botar lá público método abstrato locomover eu não preciso botar nenhuma linha para especificar o que que é o método locomover assim como no alimentar assim como no emitir som Então esse código que tá aqui já
é o código da nossa classe animal que foi representado aqui embaixo vamos continuar agora fazendo os demais a classe mamífero ó lá ó mamífero estende animal só olhar no diagrama aqui embaixo e olhar no código aqui do lado então eu fiz lá mamífero estende animal então mamífero se eu deixar do jeito que tá aqui sem linha nenhuma dentro de mamífero ele já tem peso idade membros e vai precisar implementar os três métodos abstratos que estão aqui em cima mas eu vou também adicionar um atributo né então eu fiz lá a herança pra diferença Então eu
tenho privado a cor do pelo ele é caracter e se você olhar aqui embaixo mamífero não tem nenhum método adicional Ele só tem a um atributo a mais esse fala pronto então acabou não isso porque aqui em cima aqui em cima em animal Então você olha aqui no canto a gente tem três métodos abstratos quando eu tenho o método abstrato eu sou obrigado a desenvolvê-los Então vamos fazer aqui ó vou fazer lá sobrepor o método locomover então todo mamífero se locomove como de forma genérica correndo Então vou colocar lá sempre que eu chamar o locomover
ele vai escrever na tela correndo Então se o mamífero começar a locomover vai escrever correndo também vou sobrepor o método de alimentar todo mamífero se alimenta no início da sua vida mamando isso porque ele se chama mamífero Então vou botar lá se eu chamar de alimentar ele vai ficar mamando eu também vou sobrepor o método emitir som que vai escrever som de mamífero de forma bem genérica então se eu criar um objeto do tipo mamífero e chamar o emitir som vai escrever na tela som de mamífero então com isso tá pronta aqui minha classe de
mamífero eu vou deixar a classe animal em cima e vou fazer a segunda classe agora que é a classe de réptil Então vou botar lá a classe rid estende animal vou colocar atributo adicional que é a cor da escama Vou fazer os meus métodos de sobreposição que eu sou obrigado a fazer então um réptil se ele for se locomover geralmente ele se locomova rastejando vou colocar lá rastejando na hora de se alimentar ele come vegetais e não sei se isso é verdade mas é a minha visão se biologicamente estiver errado eu não posso fazer muita
coisa sei que Tecnicamente na área de programação a gente tá funcionando aqui então também vou sobrepor o emitir som volar lá som de repto de forma genérica vamos fazer mais uma classe aqui fazer a classe peixe a classe peixe Ela também tem um atributo a mais que é a cor da escama ela também vai sobrepor os três métodos o locomover um peixe se locomove nadando também vou sobrepor o método de se alimentar que é comendo substâncias peixe come substâncias que estão na água e também vou sobrepor o emitir som eu vou botar peixe não faz
som então também sobrepus o peixe Se você olhar aqui embaixo também tem um método adicional que é o método soltar bolha que também vai escrever soltou uma bolha você percebe aqui que os meus métodos são bem bobinhos o meu objetivo aqui não é ensinar você a programar métodos é ensinar você o conceito de de programação orientada a objeto essa Essência que você precisa ter é muito importante mais do que você de que eu fazer um sistema completo aqui para você Eu preciso que você entenda o conceito então você vê aqui do lado que eu tenho
um atributo para o peixe que estende animal um atributo que é cor de escama os três métodos sobrepostos e também tenho um método adicionado um método a mais que é a nossa herança paraa diferença vamos fazer agora outra classe que é a classe ave a classe ave também tem de animal nós vamos criar um atributo que é cor da pena vamos sobrepor os três métodos um método de locomover de uma ave é voando o método de se alimentar de uma ave é comendo frutas também posso estar errado mas tudo bem E o método de emitir
som botar lá genericamente som da ave e também tem um método é só você olhar no diagrama aqui embaixo também tem o método de fazer ninho eu botei lá construi um ninho e com isso a gente termina o código desse diagrama que tá aqui embaixo eu já fiz a nossa classe animal e fiz todas as subclasses todas elas herdando da sua superclasse agora eu vou mostrar aqui do lado um código principal um exemplo de programa principal aqui vamos começar com a nossa definição de objetos Então vamos começar ali ó vou criar um objeto chamado n
que é um novo animal e par para pensar então pera aí eu olhando no diagrama aqui embaixo eu tô vendo que o animal ele é abstrato então eu não posso criar um objeto Então essa linha logo de cara ela tá errada eu não posso instanciar um objeto da classe animal porque animal é uma classe abstrata vamos declarar outros objetos aqui ó m é um novo mamífero eu posso sim criar um objeto de mamífero Então tem um objeto M aqui válido objeto R é um novo réptil objeto p é um novo peixe e o objeto a
é uma nova ave então eu tenho aqui do lado quatro objetos válidos e a gente vai começar a chamar métodos e ver o resultado dessa chamada de método Vamos começar com o objeto M vou colocar M P7 peso 85 três Óbvio que eu tenho lá o peso que é um dos atributos de mamífero e eu tenho que ter todos os métodos sets e getters eu não eu só não representei no código Até porque eu tenho um espaço limitado e a gente não vai representar aqui até porque as nossas ferramentas também já geram os nossos getters
e os nossos setters automaticamente mas eu tenho lá o get peso set peso né os métodos estão incluindo isso daí também vou ter o sete idade dois também vou ter o sete membros quatro Então olha só eu acabei de declarar um mamífero né que é o m que tem peso 85.3 idade 2 anos e total de membros 4 Vamos agora chamar os nossos métodos aqui ó locomover alimentar e emitir som se eu chamar o método locomover de um mamífero na hora que eu chamo esse método vai aparecer na tela o correndo isso porque nós definimos
que todos os mamíferos de forma genérica se movimentam correndo se eu chamar o alimentar vai aparecer mamando se eu chamar o emitir som vai escrever som de um mamífero fazer a mesma coisa com outro objeto o objeto P Então eu tenho o objeto P aqui eu defini o peso 0.35 a idade 1 ano e sete membros zero e não tem nenhum membro E eu chamei o locomover o alimentar o emitir som e o soltar bolha isso porque ele pode soltar bolha porque ele é um objeto p e p é um peixe peixe também tem o
método de soltar bolha se eu chamar o locomover ele vai escrever nadando se eu chamar o alimentar ele vai escrever comendo substância se eu chamar o emitir som ele vai escrever que peixe não faz som por último vou criar mais uma objeto vou utilizar mais um dos objetos que é o objeto a nesse objeto a que é uma ave eu vou colocar o peso 0.89 idade do e membros dois Vou chamar o locomover o alimentar o emitir som e o fazer ninho porque ele é um objeto da classe ave e Ave também pode fazer ninho
chamando o locomover ele vai escrever voando chamando alimentar ele vai escrever comendo frutas chamando emitir som ele vai escrever som de ave E aí eu peço que você analise o código aqui comigo olha só presta atenção aqui ó eu chamei para o mamífero locomover alimentar e emitir som e eu tive esses resultados também chamei os mesmos métodos locomover alimentar e emitir som para outro objeto tá vendo ó aqui eu chamei para m aqui eu chamei para p e eu obtive outros resultados também fiz a mesma coisa chamei o locomover o alimentar e o emitir som
e ele me gerou o outros resultados então se você analisar o código que tá aqui do lado eu chamei os mesmos métodos de objetos diferentes e eu obtive outros resultados Então eu chamei o mesmo método com o mesmo nome e tive formas diferentes de resposta a isso que tá acontecendo aqui eu dou um nome que é polimorfismo então o conceito de polimorfismo é fazer uma determinada coisa com o mesmo nome e essa coisa poder agir de diferentes maneiras e aí você achou que seria tão fácil assim esse tipo de polimorfismo que a gente fez aqui
a gente utilizou quando a gente sobrepôs né o método locomover o método se alimentar e o método Emi som da superclasse isso é a gente tinha a classe animal essa aqui de cima a gente tem a classe animal e logo embaixo eu tenho a sobreposição de todos os métodos é mamífero ave peixe réptil eles vão sobrepor esses métodos abstratos que estão aqui em cima em animal Isso é o que a gente chama de polimorfismo de sobreposição e a gente a gente pode passar aqui para um conceito o conceito do primeiro tipo de polimorfismo que a
gente aprendeu então ó polimorfismo de sobreposição acontece quando substituímos um método de uma superclasse na sua subclasse utilizando a mesma assinatura percebe o seguinte todos os métodos locomover eh se alimentar e emitir som tinham a mesma assinatura Qual é a quantidade de parâmetros zero em todos eles o tipo do parâmetro como é zero não tem então a mesma assinatura quando eu eu uso a mesma assinatura eu tenho o polimorfismo de sobreposição Mas agora vamos tirar essa tela do lado aqui pode tirar por favor editor Valeu meu querido vamos ficar só com a daqui de baixo
eu vou fazer o seguinte eu vou dar uma deslocada dele para cima né então a classe animal ainda tá ali é que a gente não tem muito espaço e eu vou criar umas outras classes embaixo vou criar alguns animais aqui embaixo como você tá vendo Então eu tenho um canguru um cachorro uma cobra uma tartaruga um peixe dourado e uma arara Se você prestar atenção tem herança a gente pode definir a herança aqui ó por exemplo Canguru e cachorro são mamíferos a cobra e a Tartaruga são repteis o peixinho dourado é um peixe e a
arara obviamente é uma ave Eu acho que essa parte eu não errei não e aí eu vou criar especializações dessas classes então eu posso ter vários cangurus vários cachorros vários tartarugas várias cobras várias Araras e várias peixinhos dourados e eles vão ter algumas características então Ó o canguru além de tudo que as mães dele T de Tod todas as superclasses tem peso tem idade tem cor do pelo tem ele pode se locomover ele pode se alimentar ele pode fazer tudo que as superclasses podem fazer e ele também pode usar a bolsa e se locomover você
falar poxa mas locomover a gente já fez Aguenta aí meu pequeno gafoioto o cachorro ele pode enterrar o osso e abanar o rabo uma tartaruga ela também pode se locomover você fala Poxa mas o locomover já tava na mãe Aguarda aí daqui alguns segundinhos você vai entender mais uma vez eu vou deixar esse pequeno trecho aqui do nosso diagrama de classe diagrama de classe aqui embaixo para você poder enxergar e eu vou pedir mais uma vez meu dignissim meu editor para puxar a tela aqui do lado de novo nessa tela que tá aqui Branca eu
vou programar todas essas classes novas que estão aqui embaixo Então o que eu vou fazer é programar vou começar com Canguru e o cachorro Então vamos colocar lá o código do Canguru e do cachorro então tenho lá cangurus tem de mamífero e cachorros T de mamífero os dois são mamíferos logo se eles são mamíferos eles também são animais então eu tô criando um terceiro nível de herança aí nos nossos exercícios o canguru também vai ter o método usar bolsa que ele vai escrever lá usando a bolsa e ele também vai sobrepor o método locomover isso
por qualquer mamífero ele se locomove como como a gente colocou anteriormente correndo só que na verdade o canguru não corre o kanguru salta então o locomover do kanguru vai ser diferente do locomover de um mamífero normal então na classe mamífero eu implementei o método de locom S de uma maneira mais genérica Canguru que é um mamífero ele não se locomove como um mamífero comum então eu sobreponho esse método que já tinha sido sobreposto e esse método sobreposto aqui que para escrever saltando só vai funcionar para objetos da classe Canguru e eu vou fazer a mesma
coisa pro cachorro agora eu tenho o método de enterrar osso que ele vai escrever lá enterrando osso e vou ter o método também público de abanar o rabo botar lá abanando o rabo então essas duas classes já estão implementadas corretamente no nosso sistema vamos continuar aqui ó Tá faltando quem A Tartaruga e a cobra agora vamos fazer a classe de todos os outros que estão aqui embaixo então tenho cobra Tartaruga goldfish e arara cobra e Tartaruga estendem o réptil goldfish estende o peixe e arara estende a ave exatamente como tá aparecendo no diagrama aqui embaixo
se você perceber a cobra o goldfish e a arara não vão implementar nada de diferente Isso significa que elas estão vazias não isso significa apenas que ela só tem as coisas da sua mãe da sua superclasse já a tartaruga ela vai sobrepor o método locomover por qu normalmente o locomover de um réptil que a gente declarou lá em cima na classe na superclasse foi rastejando não foi só que uma tartaruga não rasteja ela anda bem devagar Então sempre que eu mandar uma tartaruga se locomover ela vai andar bem devagar e com isso a gente termina
também a diagramação desse diagrama Aqui de baixo chegou a hora agora da gente partir pro nosso programa principal vamos ver um exemplo de programa principal aqui já declarei MC K como objetos do tipo mamífero Canguru e cachorro respectivamente Então eu tenho um mamífero que é uma superclasse cachorro e Canguru que são subclasses de mamífero mas eu tenho um objeto de mamífero e dois objetos que são subclasses de mamífero um canguru e um cachorro vamos agora trabalhar com esses três vou fazer o seguinte o meu mamífero vai ter peso de 570 idade de 8 anos quatro
membros vai se locomover vai se alimentar e vai emitir de som quando eu chamar o locomover do mamífero ele vai escrever o quê obviamente ele vai escrever correndo isso porque o mamífero tem esse método colocado o se alimentar é mamando e o emitir som é som de mamífero agora eu vou fazer a mesma coisa com c que é um canguru Eu tenho um canguru de 55 k30 k tenho idade trê e quatro membros quando eu chamar o locomover do Canguru o método que vai valer é o método sobreposto da classe canguru isso é normalmente um
mamífero se locomove correndo mas um canguru ele se locomove saltando mais uma vez aqui ó eu chamei o mesmo método ó locomover locomover Canguru é um tipo de mamífero mas o método de locomoção dele é diferente do método do mamífero o mamífero normalmente corre só que um canguru ele salta eu fiz uma sobreposição eu tenho mais uma vez aqui o polimorfismo de sobreposição quando eu chamar o alimentar será que vai dar erro não quando eu chamar o alimentar mamando isso porque eu não sobrepus o método alimentar no Canguru então ele vai utilizar o da mãe
dele que é mamífero mesma coisa vai acontecer para emit som som de mamífero se o kanguru fizesse um som diferente de som de mamífero eu poderia mais uma vez sobrepor utilizar mais uma vez o polimorfismo de sobreposição para poder adicionar essa funcionalidade a ele vou fazer uma terceira vez agora com K que é um cachorro o peso é 3.9 qu a idade é cinco o membros quantidade de membros são quatro na hora que eu chamar o locomover ele vai saltar ou ele vai correr olhando o diagrama a gente vai ver que ele vai correr isso
porque cachorro não sobrepõe o locomover de mamífero então ele vai utilizar o locomover de mamífero que é correndo na hora de se alimentar ele também vai mamando e na hora de emitir som ele também vai fazer som de mamífero eu poderia fazer a sobreposição do método ah emitir som no cachorro isso porque eu sei como o cachorro emite som então eu poderia sobrescrever mas isso a gente vai fazer na aula prática na nossa determinada linguagem e por falar em aula prática agora chegou o momento você vai poder escolher aqui do lado ó Qual é a
linguagem de programação que você quer implementar tudo isso que a gente viu Nessa aula conceitual quer fazer em PHP clica aqui em cima quer fazer em Java clica aqui embaixo tá no celular e não tá conseguindo clicar aperta no izinho de interatividade aqui em cima escolhe a Playlist que você quer né programação orientada objeto com Java ou programação orientada do objeto com PHP E aí você vai assistir essa mesma aula vai procurar na playlist a aula 12b e assistir a 12b porque é exatamente a prática disso tudo que a gente acabou de ver então é
isso pequeno gafanhoto a gente se vê Já já na sua aula [Música] prática i