‫Bem-vindo de volta ao exemplo do polimorfismo e a este vídeo, vou usar uma abordagem diferente onde você, em primeiro
‫lugar, tem um pequeno desafio.
‫Você deve escrever algum código que o ajudará a entender a herança um pouco mais ou um pouco melhor.
‫E a seguir iremos para os formulários de votação, fazer parte de todo este programa.
‫Portanto, vá em frente e tente escrever o código de acordo com este desafio aqui.
‫Vídeo tão positivo e experimentado.
‫Tudo bem, espero que você tenha tentado, então vou criar uma nova classe Ed e
‫vou chamá-la de carro, e essa classe será apenas uma classe geral de carros.
‫E pode conter ou deve conter propriedades.
‫Direito.
‫Como eu disse, ele deve ter uma propriedade chamada HP Propp e deve ser um número inteiro.
‫E a HP será a potência.
‫Quão poderoso é este carro?
‫E então outra propriedade, que é do tipo string e que é a cor.
‫Agora, o que preciso agora é ter um construtor.
‫Então, vou criar um carro público que leva em conta o HP e a cor.
‫E aqui eu acabei de dizer esse ponto HP como o HP e eles começam a cor tem a cor.
‫Então essa cor vai ser nossa cor de propriedade e o HP vai ser o HP da nossa classe ou nosso objeto
‫que é criado do tipo carro.
‫Agora, o próximo deve ser o método de detalhes.
‫Então public void mostra detalhes.
‫E aqui nós apenas escrevemos algo no console.
‫Então S. C. , HP vai ser mais HP.
‫Então temos a cor, que deve ser algo parecido com a cor.
‫É claro que eu poderia usar uma abordagem diferente onde uso a manipulação de strings aqui, mas
‫vou mantê-la assim.
‫Muito simples.
‫Portanto, o próximo é um vazio público e é chamado de reparo.
‫E vamos mudar esses dois métodos mais tarde.
‫Portanto, não se preocupe.
‫Mas, por enquanto, eu queria mantê-los bem simples com o projeto que usamos até agora,
‫que deixará mais claro o que o polimorfismo faz.
‫E aqui, assim como o carro foi reparado.
‫Tudo bem.
‫Então esse é o nosso carro e é a nossa classe base.
‫E agora precisamos das outras duas classes, que é nosso BMW, classe BMW.
‫E aqui, como eu disse, temos uma propriedade adicional chamada modelo, e este é um modelo de string.
‫Agora, outro aspecto foi a marca, que é privada.
‫Marca de string privada, e se chama BMW.
‫Agora, a seguir, precisamos de um construtor.
‫Portanto, um BMW público.
‫E antes de fazer isso para criar o construtor, quero herdar de carro.
‫Então agora meu BMW vai herdar do carro.
‫E o que preciso aqui é o HP,
‫depois a cor e o modelo e aqui em Tacoma.
‫Então, o que posso fazer é definir o HP para o que realmente posso ir em frente e fazer o mesmo com a cor, que
‫vai ser a cor e o modelo que é nossa propriedade deve ser o modelo.
‫Então, esse aqui, ali, eu uso isso porque quero para esse objeto e a mesma coisa que posso fazer
‫aqui e posso fazer aqui.
‫Portanto, embora eu não os tenha criado aqui, como você vê, ainda posso usá-los.
‫Agora, aqui está algo que você ainda não viu, que é básico.
‫Posso usar a palavra-chave base aqui e simplesmente dizer, OK, quero usar o HP e a cor da minha classe base,
‫então não preciso mais dessas duas linhas, então posso até mesmo me livrar delas.
‫Como você pode ver agora, a seta também desaparece.
‫Então agora criamos um construtor que usa o construtor base de nossa base, ou seja,
‫nossa classe base, que é nosso carro, só vai usar esse construtor e só vai adicionar o modelo.
‫Portanto, agora temos um construtor muito curto que faz todo o trabalho para todo o trabalho.
‫Então agora o que eu preciso a seguir são detalhes de show nulos, como eu disse.
‫E aqui eu só quero mostrar os detalhes e vou apenas copiar o método daqui ou a entrada
‫do método.
‫E aqui vai ser a marca em primeiro lugar.
‫Portanto, marca mais.
‫Marca mais HP, então eu ia mostrar alguns detalhes adicionais, e aqui, como você vê os detalhes, Hydes herdou detalhes do show
‫de carros membros, use a nova palavra-chave se a intenção era ocultar.
‫E isso é algo que vamos cobrir no próximo vídeo.
‫Mas, por enquanto, vamos criar também o método de reparo, reparo de vazios públicos.
‫E aqui deve apenas dizer algo como o BMW
‫e aqui foi consertado.
‫Então, qual é esse zero que eu tenho aí?
‫Bem, esse é o modelo.
‫Então, eu só quero saber o modelo do carro.
‫E eu só vou dizer, vamos dizer BMW Zevi como EFORE ou e três ou cinco foram consertados.
‫Então é isso que isso deve fazer.
‫E agora preciso de outra, outra aula, que é bem parecida com a que temos aqui.
‫Vou criar uma nova classe e vou chamá-la de Audy.
‫E para simplificar, vou copiar a maior parte do material aqui, na verdade toda a classe, porque será
‫muito semelhante.
‫O que é diferente aqui é que é um Audi e que temos autoridade como construtor e, claro,
‫ele precisa herdar do carro.
‫Agora que está feito e agora vem a parte do polimorfismo.
‫Portanto, temos um Audi, que é do tipo carro.
‫Temos um BMW, que também é um tipo de carro, e essa classe base, que é o carro.
‫E agora podemos ir em frente e criar vários objetos disso.
‫Agora, fará muito mais sentido assim que chegarmos lá.
‫Portanto, vamos prosseguir e criar uma nova variável chamada carros, que será uma nova lista de carros.
‫E embora esta seja uma lista de carros, portanto, da classe de carros, podemos criar tudo isso e a BMW está aqui.
‫Portanto, ele só pode criar, digamos, um Audi, que é azul e é um A4.
‫Então temos um novo BMW, que é, digamos, 250 HP e digamos que é um carro vermelho e é um três.
‫Portanto, essa é uma parte do polimorfismo que você pode usar as subclasses em vez da classe base ou as classes de
‫condução em vez da classe base.
‫Um trabalhando, por exemplo, com as listas ou em geral e por geral, você verá o que quero dizer.
‫Então, o que vou fazer é executar um para cada loop, que vai verificar todos os meus carros na lista do
‫meu carro, e vai escrever algo como conserto de carro ou chamar um método de conserto .
‫Tudo bem, então vamos chamar isso ou vamos executar isso.
‫Mas antes de fazermos isso, precisamos consolar a chave de leitura de Don.
‫Caso contrário, nosso programa simplesmente fechará.
‫Então aí está você.
‫O carro foi consertado, o carro foi consertado.
‫Então agora ele está chamando o método de carro aqui, que apenas este carro aqui foi consertado.
‫Portanto, ele não está chamando esse método de reparo e nem chama esse método de reparo, que foi o BMW que
‫foi reparado ou aqui.
‫É realmente aqui que já deveria ter áudio, embora tenha sido reparado.
‫Então, por que chama o método de reparo do nosso carro e não o da BMW?
‫E o áudio disso tem a ver com duas coisas.
‫Então um deles é que temos esse reparo de voit, que não é virtual.
‫Portanto, se fizermos um reparo de vazio virtual, o que agora podemos fazer é, por exemplo, aqui podemos substituí-lo para que
‫possamos substituir o método de reparo.
‫O que isso fará é se executarmos o código novamente.
‫Veremos que o carro foi consertado, esse é o nosso Audy, o primeiro, e depois o BMW M3 foi consertado e esse
‫é o segundo.
‫E isso ocorre porque nossa classe BMW aqui substituiu o método de reparo, então podemos simplesmente pegar esse método, torná-lo
‫virtual, e isso nos permite substituí-lo nas classes de direção.
‫E é isso que fizemos aqui.
‫Então, agora esses são os dois aspectos do polimorfismo, então o polimorfismo no trabalho, um, um Audi e um VW, Porche, quaisquer
‫classes diferentes que você queira, podem ser usadas onde quer que um carro seja esperado.
‫Assim, sempre que eles herdarem desta classe aqui, da nossa classe de carro aqui, esta, podemos simplesmente
‫usá-la.
‫E o segundo aspecto do polimorfismo é que o método virtual pode ser invocado em cada uma das classes
‫de direção, não na melhor classe.
‫Isso é algo que fizemos com o BMW e agora podemos fazer o mesmo com nosso Audi aqui.
‫Então, vou fazer disso uma substituição também.
‫Substituir reparo de voto.
‫Agora vamos executá-lo novamente.
‫E agora ambos devem mostrar suas marcas e seus modelos.
‫Assim, vemos o Audi, um quatro e um BMW e três foram consertados.
‫No entanto, há mais uma coisa sobre o polimorfismo.
‫Portanto, se você deseja ocultar os melhores membros da classe com novos membros, pode usar a nova palavra-chave.
‫Digamos que temos esse método de mostrar detalhes Voit em nosso carro de classe, que é apenas um vazio.
‫Não é um vazio virtual.
‫E agora, se eu gostaria de substituir isso, não substituir no sentido de que fizemos bem aqui com o
‫de substituição.
‫Mas, na verdade, quero usar esse método sempre que estou usando um BMW e não no sentido de ignorar o antigo,
‫mas apenas escondendo o do carro e usando os detalhes do show.
‫Desde então, posso usar a nova palavra-chave.
‫Então isso vai fazer é simplesmente dizer, OK, os detalhes deste show têm prioridade sobre o carro, os detalhes do show.
‫Portanto, ele não está sobrescrevendo, mas sim priorizando-o.
‫Então, agora, como devo mostrar este método detalhado de exibição ou usar para mostrar o método?
‫Bem, vamos criar um novo BMW B e W de três, que será um novo carro BMW com duzentos cavalos de
‫potência.
‫Vamos torná-lo preto e então é um modelo Z três.
‫E então vamos criar também um Audi, um Audi, um três.
‫Vai ser uma festa nova com, digamos, 100 cavalos e essa aqui é verde, uma cor bem esquisita para um
‫carro.
‫E então você tem um modelo de três aqui.
‫Agora, vamos rodar o BMW e mostrar o método de detalhes aqui.
‫E o mesmo para o Audi Audi, um show de três dedos, detalhes.
‫Então, vamos apenas executá-lo.
‫E você vê HP, duzentos pretos coloridos, HP, cem cores verdes.
‫Como você pode ver, ele está chamando o método de detalhes do show de carros e não o da BMW.
‫E isso porque o criamos como um carro.
‫Mas é um novo BMW como carro.
‫Portanto, se fizermos a mesma coisa agora, vamos em frente e criar um b m w cinco,
‫que não será um carro, mas desta vez um b m w novo BMW.
‫E este, digamos, tem trezentos e trinta cavalos de potência.
‫É branco e é um M cinco.
‫Então, agora, se eu chamar isso de V.
‫Você e o método de cinco pontos mostram detalhes, ele vai me mostrar a marca também para que
‫sejamos a marca BMW, HP 330, cor branca e os primeiros.
‫Então esses aqui também tiveram que mostrar método de detalhe, mas usam o do carro e agora o
‫da BMW usa o da BMW.
‫Portanto, embora disséssemos novo BMW, ainda usamos a classe carro para criar um objeto carro daquele que
‫é.
‫Internamente, um BMW, mas chamamos os métodos do carro e não os métodos BMW, somente se formos em frente
‫e criarmos como um BMW chamamos de novo método.
‫Portanto, este novo aqui diz simplesmente, OK, se você criar um objeto meu, vá em frente e escreva-o como novo.
‫Do contrário, vá em frente e simplesmente use o método dos carros ou da classe carro.
‫A classe base, basicamente.
‫Mas e se eu quiser chamar o método show details da minha classe de baixo no meu objeto BMW, então posso fazer
‫o seguinte.
‫Posso prosseguir e criar um carro, que chamarei de carro B, que será um BMW, M5, mas
‫será um carro.
‫Então, aqui estou usando fundição para que eu lance meu BMW em um carro e agora posso ir em frente e usar o carro.
‫B que mostram detalhes do meu BMW M5.
‫Ou do meu carro, para que sejamos mais uma vez três em 30 cores branco.
‫Então esse é o nosso BMW, M5 aqui.
‫Então, por que você usaria essa abordagem de ocultar e usar essa nova palavra-chave aqui para seus membros?
‫Bem, você usaria isso se quiser que seu membro derivado tenha o mesmo nome
‫de um membro em uma classe base, mas não deseja participar de uma invocação virtual.
‫Então é quando você usa essa nova palavra-chave que vimos aqui.
‫Caso contrário, se você deseja substituí-lo, você pode simplesmente usar esta abordagem de substituição aqui ou apenas
‫substituir a palavra-chave em sua declaração do método.
‫Tudo bem.
‫Então isso é bastante.
‫Polimorfismo.
‫No próximo vídeo, veremos como podemos evitar isso.
‫Então, se você não quiser isso, um método pode ser sobrescrito.
‫Existe uma maneira de fazer isso em nossa classe base.
‫Então nos vemos no próximo vídeo.