[Música] fala Mestres beleza na aula de hoje nós vamos estar explorando aqui o que que é a herança né nesse nosso mundo de classes né E principalmente seguindo o princípio da programação orientada a objetos né onde a herança é basicamente quando nós temos a classe pai e a classe filha né e onde a classe filha ela erda o o ae P né Ela herda ali os membros da classe pai e a gente fazendo né Essa herança ela consegue reutilizar O que foi definido na classe P Então a gente vai ver isso aqui na prática Tá
eu vou criar a classe pssaro e e pássaro ele é um animal né então aqui na notação a sintaxe aqui seria a classe pássaro e nós temos aqui ó extend ou seja o pássaro vai estender a classe A classe pássaro né vai estender a classe animal tá e aqui a gente abre e fecha Chaves então com isso eu já eu já tenho né Essa extensão sendo feita e eu posso colocar o Construtor aqui né dentro de pássaro onde no Construtor se eu digito aqui né o dis ponto nós temos aqui ó cor dormir nome e
tamanho tá Ou seja a classe A a classe pai né que seria animal nós temos aqui nome cor e tamanho que são as variáveis e nós temos também o método dormir e eu tô conseguindo acessar esses métodos através eh na classe pássaro né que seria essa classe filha aí então essa ideia de classe pai e classe filha nós tem tem outra notação aqui outro outra nomenclatura né dentro do JavaScript que seria a superclasse e a subclasse onde a superclasse é a classe pai Então nesse caso aqui a classe super seria animal tá e a classe
sub seria pássaro tá isso é importante pra gente entender um pouco mais de como que essa questão da herança funciona então aqui de pássaro eu posso falar né que pássaro ele vai ter um bico né um tipo de bico e bico vai ser um membro aqui o bico vai ser pode começar com string vazia né E aí nós teremos né pássaros que T bico diferente mas pássaro também tem nome cor e tamanho tá então no construtor de pássaro eu preciso colocar aqui que eu recebo esses parâmetros né então vou receber bico nome cor e tamanho
tá e quando eu faço isso a gente eu vou colocar aqui um console log no no construtor de pássaro né e vou chamar aqui só um Hell só pra gente ver isso aqui funcionando e a gente já criar aqui né as instâncias porque eu vou criar uma Instância de animal uma Instância de animal tá e uma Instância de pássaro pra gente ver isso aqui funcionando então vou criar aqui a variável animal vai ser um New animal e eu vou ter também o pássaro que vai ser o new pássaro né usando aí as classes diferentes pra
gente ir comparando então o animal que eu vou criar eu vou passar aqui nos parâmetros por exemplo né que é nome cor e tamanho é o nome vai ser Rex a cor dele ele vai ser verde e o tamanho sei lá 10 e o pássaro o pássaro vai ser o pioio o nome dele ele vai ser o nome não o bico bico do pássaro o bico dele é Curvo né o nome é pi piil Pio piil a cor dele é amarela Amarelo né e o tamanho dele é um tá então eu vou fazer esses dois
e vou fazer aqui ó o console log de animal e fazer um console log de pássaro tá então eu estou criando as duas instâncias As duas instâncias passando os valores para cada uma e a gente vai executar aqui para ver o nosso log o que que nós temos e nós temos já um erro tá que o que que ele tá falando nós somos obrigados a chamar o método super no Construtor de uma classe derivada então o que que isso quer dizer quer dizer que dentro do Construtor da classe derivada que seria pássaro né eu preciso
eu tenho que chamar super passar aqui os parênteses né ou seja o que que é esse método super né O que que ele tá fazendo ele basicamente ele está executando o Construtor da classe super tá de animal então através do método super eu eu vou repassar os parâmetros que eu recebi em pássaro pra classe animal tá então por isso que a gente tem que chamar a gente é obrigado a chamar o super aqui então no caso da classe animal né eu recebo nome cor e tamanho no Construtor dessa classe então na classe pássaro né que
estende animal eu no super eu vou passar esses três parâmetros né não cor e tamanho e aí quando eu fizer isso eu vou executar o construtor de animal e no construtor de animal eu vou atribuir aos membros né as variáveis aqui a esses valores que eu enviei tá então e aqui dentro do Construtor de passaro eu posso atribuir o valor aqui no bico né então dis P bico vai ser o parâmetro que eu recebi aqui que eu recebi né que eu chamei de bico Beleza então agora se eu executo nós temos aí os dois objetos
né animal e pássaro animal tem nome cor tamanho pássaro tem nome cor tamanho e o bico né tem essa propriedade a mais e e o que que nós temos de diferente aqui né pássaro ele possui o bico mas aqui dentro da classe pássaro eu não tenho a implementação do método do dormir né dormir é uma propriedade é é um é um método que tá na classe animal da mesma forma que nome cor e tamanho tá então esse comportamento tanto dessas variáveis quanto o método dormir foi herdado pra classe filha né que seria pássaro então pássaro
herdou essas propriedades de animal e a gente pode ver isso aqui funcionando Chamando por exemplo n a gente já viu aqui né que pássaro ele tem nome cor e tamanho que que são coisas que foram implementadas dentro de animal mas eu posso chamar aqui também ó é o animal ponto dormir né o método dormir e aqui pássaro ponto dormir também tá então o pássaro ele tem o método dormir e quando eu executar nós temos ver o animal Rex está dormindo né que foi aqui o que nós chamamos da instância de animal e o animal pioio
está dormindo né que é o a Instância de pássaro Que Nós criamos e a gente conseguiu chamar também o método dormir tá então Houve essa extensão aí Houve essa herança né que Vai facilitar pra gente então por exemplo pássaro ele eu posso ter aqui o método voar né e aqui eu vou fazer o consol n o pássaro está voando E aí quando eu Executar a gente vai ver e na verdade eu tenho que chamar aqui né se eu chamar animal pon voar isso aqui não vai existir tá porque voar é um método específico que eu
implementei na classe pássaro tá então o animal não tem essa habilidade esse método voar né então se eu chamar animal ponto voar se eu executar Isso aqui vai dar erro porque não existe voar dentro de animal né só que se eu chamar pássaro pon voar e executar isso aqui tem aí ó o pássaro está voando n então funciona eh nós temos aí essa separação e essa separação é é também é a ideia de encapsulamento né então aqui nós já vimos dois dos princípios aí da orientação objeto onde eu tenho um o a implementação dos métodos
né fica encapsulada então o dormir ele tá específico na classe animal tá encapsulado em animal e voar também tá encapsulado aqui em pássaro né a gente consegue fazer isso e também consegue a gente conseguiu ver a parte aqui de herança né de extensão de uma classe extendendo A outra e o que eu quero mostrar para vocês também que é muito interessante é a parte de sobrecarga de métodos né que quando a gente fala de de sobrecarga ou sobreposição de métodos é o comportamento de uma classe estendendo a outra tá então para essa aula aqui é
isso tá eu espero aí que eu tenha ajudado qualquer dúvida pode est deixando um comentário logo abaixo e é isso aí muito obrigado e até a [Música] próxima n