[MÚSICA] Olá a todos, bem vindos a mais "hands on" do curso da Orientação a Objetos com Java. Hoje vamos ver exemplo aí mais completo sobre herança. Está certo? A gente vai retomar aquele exemplo do carro, vamos criar diferentes tipos de carro e vamos colocar eles pra correr juntos numa corrida, está certo? Então vamos lá. Primeiro eu vou dar uma revisadinha no que já está desenvolvido. A gente tem aqui a classe carro, que ele tem aqui nome, ele tem a velocidade, e ele tem uma potência. Quando eu mando acelerar, ele soma a potência, e quando eu mando frear, ele divide a velocidade por dois, está certo? Uma diferença que a gente vai fazer aqui vai ser que o carro agora, ele tem uma velocidade máxima, ele tem aquela velocidade máxima que ele consegue chegar. Eu tenho aqui essa classe Teste Carro, que ele tem aqui o carro parado, o acelerar, o frear e se ele freia até zero. Então, a primeira coisa que eu vou fazer aqui é acrescentar a velocidade máxima nesse carro que eu tenho. Então vamos lá, eu vou vir aqui, vou colocar aqui velocidade. Opa, não é "valocidade" é velocidade máxima, certo? E aí eu quero que no construtor, seja passado, agora que eu já vi a parte de controle aos modificadores de acesso, eu posso colocar todos aqui como privados. Certo? Vou colocar aqui os métodos de acesso pra poder, primeiro eu vou criar o construtor, vamos lá. Uma coisa de cada vez, então vamos ver aqui também, aproveitar pra ver alguns dos, das coisas que o eclipse pode facilitar a nossa vida. Uma delas por exemplo, se eu quero criar construtor, eu venho aqui Source, construtor usando os atributos, e os "in fields". Então eu quero construtor que ele receba a potência, o nome e a velocidade máxima. Eu posso até aqui, eu quero primeiro o nome, depois a potência e depois a velocidade máxima. Então eu criei alí, e eu posso aproveitar também, a gente já viu aqui que esse "super" aqui, a gente pode tirar, e eu vou aproveitar aqui pra garantir que a minha velocidade ela seja zero, certo? Então, eu tenho acelerar, frear, eu tenho o "getVelocidade" agora eu já posso colocar "public" todos esses métodos aqui. Certo? E vou tirar esse imprimir aqui, que não vai fazer mais parte do meu exemplo. E vou ouvir aqui, e vou também usar o eclipse pra gerar alguns métodos de acesso. Então olha, gerar métodos getters and setters eu vou marcar aqui que eu quero get nome. Potência não precisa, e a velocidade ele já tem o get. Então é isso aí. O resto, a questão da potência são questões aqui referentes ao funcionamento interno alí do meu carro. A princípio eu não preciso recuperar, está certo? Bom, isso aqui fez falhar aqui o meu teste, né? Que eu simplesmente "setava" a potência, então eu vou ter que digamos aí, refazer isso daqui. Então, como que eu fazer isso aqui? Eu vou criar aqui o meu before. Então, before vou criar aqui inicializa carro, certo? Vou pegar essa variável carro aqui, vou jogar aqui para o teste pra coisa, e vou fazer aqui o c = new Carro O que que eu tenho que passar? O nome. Então o nome do carro do teste vai ser teste, certo? A potência dele vai ser 10, e a velocidade máxima a princípio vai ser 100. Então olha, o teste do carro parado. Deixa eu só ver se a velocidade inicial é zero, aqui olha. No acelerar eu já inicializei, no frear também, certo? E o frear até zero, mesma coisa. Vamos ver, acho que aqui eu precisaria colocar, eu vou salvar, opa, ainda tem algum erro aqui olha, está faltando importar o before eu vou importar aqui, certo? Opa, qual o problema? Ele não pode ser int. Não sei de onde eu tirei esse int. Ele tem que ser void. Eu salvo aqui agora, acho que agora está certo, né? O que está dando errado é esse método principal aqui olha, ele ainda está usando muita coisa, eu vou até excluir ele aqui, que ele não vai fazer parte desse meu exemplo. Vou exclui essa classe, depois a gente vai ter outra classe principal que vai fazer a nossa corrida, certo? Então vou rodar o teste aqui pra ver se está tudo funcionando perfeito. Okay. Agora eu tenho que fazer o teste da velocidade máxima. Certo? Ele até 10, né? Então o que eu vou fazer? Eu vou colocar aqui, teste acelerar, até velocidade máxima. Certo? Então o acelerar vai somar 10 e a minha velocidade máxima é 100, então, eu vou fazer aqui for (int=0), vou acelerar aqui, sei lá, 14 vezes, e vou ver se ele mantém a velocidade de 100 no máximo, né? Então eu vou salvar aqui, vou executar. Certo? E aqui ele não está funcionando. Por quê? Porque eu não fiz nada ainda. Vamos ver lá, olha ele está indo até o 140. Então eu tenho que fazer aqui, olha ele só vai depois que ele acelerar se a velocidade final que ele tiver for maior que a velocidade máxima, então a velocidade vai ser a velocidade máxima. [SEM_ÁUDIO] Certo? Vamos ver se agora nosso teste passa? Passou. Certo? Então eu tenho aqui, a gente não mexeu com nada de herança ainda, mas estamos preparando o terreno, eu criei o meu carro aqui utilizando, eu dei uma "refatorada", acrescentei alí os modificadores de acesso que a gente já conhece, e agora isso aqui finaliza a nossa primeira parte do exemplo. Na segunda parte vamos mexer aqui, criar aqui outro tipo de carro. [MÚSICA]