‫No último vídeo, você aprendeu sobre herança e os fundamentos da herança, mas agora
‫vamos mergulhar um pouco mais fundo e examinar várias palavras-chave que serão relevantes quando se trata de herança.
‫E os que veremos serão virtuais e a palavra-chave de substituição.
‫Agora, você pode se perguntar, por que temos animais aqui na tela?
‫Por que isso mostra um monte de imagens de animais?
‫Bem, a questão é que vamos implementar uma classe animal que nos permitirá herdar de
‫um animal será a classe pai, que tem algumas habilidades, como o que um animal pode fazer?
‫Pode fazer um som, pode comer e pode tocar.
‫Isso é pelo menos o que vamos permitir que a classe animal faça.
‫E, claro, um animal pode fazer muito mais.
‫Daremos a ele algumas propriedades, como o nome de propriedade The Age, se estiver com fome, por exemplo.
‫Então, apenas se estiver com fome, ele comerá, caso contrário, não comerá.
‫Então essa é realmente a ideia de criar uma classe de animais.
‫E agora você pode, é claro, ir em frente e implementar essa classe sozinho.
‫E então vamos usar herança para não só usar os mesmos métodos e propriedades, mas também
‫sobrescrevê-los, basicamente dizendo, OK, o som que um animal que é um cachorro faz será diferente do som que, por exemplo,
‫faz um macaco ou faz um macaco ou faz uma girafa ou algo
‫assim.
‫OK, isso é basicamente o que vamos implementar.
‫E, ao fazer isso, aprenderemos as diferentes palavras-chave, como virtual e a palavra-chave override.
‫Então vamos sair e criar um novo projeto para isso.
‫Vou usar um aplicativo de console.
‫Vou chamá-lo de demonstração de substituição virtual.
‫Tudo bem.
‫Como um pequeno desafio para você, se quiser experimentar por si mesmo, escreva uma classe que
‫se chamará animal e terá o nome de propriedades idade está com fome.
‫Então, é claro, um construtor, então um método é chamado de fazer sons, comer e também brincar.
‫OK, então, possivelmente, implemente todos eles se quiser, porque isso apenas lhe dará um pouco
‫de prática para criar todos esses métodos diferentes.
‫E então veremos como alterá-los um pouco para que possamos usá-los corretamente na herança.
‫Tudo bem, espero que você tenha tentado, portanto, é claro, podemos usar o Casey controlado para criar uma nova
‫classe e vou chamá-lo de um animal.
‫Assim e agora esta classe animal terá algumas propriedades, como eu disse, então a propriedade de nome,
‫a propriedade, bem como a propriedade dele com fome, e então um construtor simples que usa todas essas propriedades, você pode ver
‫que estamos apenas usando GetSet.
‫A propósito, se você deseja criar uma propriedade real rapidamente, basta inserir prop toque duas vezes e depois inserir o
‫tipo, por exemplo, string e aqui, por exemplo, o nome.
‫Então é assim que você faria muito rapidamente, não precisando digitar mais do que o necessário.
‫Tudo bem.
‫Portanto, este será nosso construtor aqui com o nome de The Age and the está com fome e você
‫pode ver que está com fome não é algo que definiremos para o animal depois de criá-lo,
‫mas vamos configurá-lo para desenhar no início por padrão.
‫Então, estou apenas configurando para seu padrão faminto.
‫OK, agora eu disse que quero um método que será chamado de fazer sons.
‫Então, vamos examinar esse método.
‫Portanto, estou usando um método virtual vazio, fazer som para outras classes sobrescrever.
‫Estou tornando esse método virtual para que ele possa ser substituído por classes que herdam de animal.
‫E veremos mais tarde como fazer isso porque o som que um animal faz vai depender muito
‫do próprio animal.
‫Portanto, estar com fome é algo que todo animal está compartilhando porque, bem, é assim que funcionamos.
‫Precisamos de energia e a obtemos por meio dos alimentos.
‫E para nos motivarmos a conseguir comida ou a comer comida, temos a sensação de fome.
‫Mas este método virtual que temos aqui faz sons, não precisa ser vazio.
‫Então, vamos examinar esse método de alimentação aqui.
‫E esse método de comer também será um método virtual.
‫Isso permite que nossas subclasses sobrescrevam esse método.
‫Portanto, se quisermos sobrescrever o método, podemos fazer isso, mas não é necessário.
‫A funcionalidade geral será a que você pode ver aqui.
‫Por isso, vai verificar se o animal está com fome.
‫Se estiver, ele apenas imprimirá o nome e dirá que está comendo e, se não estiver com fome, dirá
‫que nome não está com fome.
‫Portanto, o nome é, aliás, propriedade do nosso animal.
‫Portanto, esse nome é propriedade do animal.
‫OK, então esse será o nosso método de alimentação e também o tornaremos virtual.
‫E então outro método virtual que será o de jogar.
‫OK, então este método virtual como o que basicamente dirá que o nome está sendo reproduzido no console.
‫Agora, estamos usando algumas instruções de linha direita muito simples, isso poderia ser, é claro, muito mais complexo.
‫OK, então isso é apenas para simplificar a coisa toda e torná-la mais humanamente compreensível, por assim dizer, porque
‫brincar e comer e outras coisas, isso é algo que podemos entender diretamente porque vimos isso
‫em nossas vidas e fizemos nós mesmos, bem como ler dados de um banco de dados ou algo
‫parecido.
‫Isso não é algo que geralmente vemos na vida real.
‫OK.
‫Tudo bem.
‫Portanto, agora vamos definir nossas classes que serão derivadas de animal, de modo que herdarão da classe animal.
‫Portanto, vamos usar o controle K e ver nossa moeda comum.
‫E isso irá abrir a tela onde podemos criar uma classe ou, alternativamente, apenas criar uma
‫classe.
‫Caso contrário, vou criar uma classe de cachorro e essa classe herdará de um animal assim.
‫Agora, você já pode ver que não há nenhum argumento fornecido que corresponda ao nome do parâmetro formal obrigatório
‫da string do nome do animal.
‫Portanto, precisamos criar um construtor aqui.
‫Portanto, vamos prosseguir e criar um construtor simples, que seguirá a mesma estrutura.
‫Terá o nome e a idade e terá um nome de base bem utilizado para que possamos usar o mesmo construtor que
‫definimos aquele animal.
‫Agora vou usar esta nova propriedade chamada Abie ou está feliz e este será um booleano.
‫Isso basicamente armazenará se o animal, neste caso, o cachorro estiver feliz.
‫Portanto, será verdade se o cão está feliz e os cães são animais felizes.
‫Então, por padrão, o cachorro ficará feliz.
‫Tudo bem.
‫Agora vamos substituir o método ITW.
‫OK, então vamos simplesmente substituir o método virtual, comer e, portanto, estamos usando essa palavra-chave de substituição.
‫OK, então bem público, como um método normal, mas estamos adicionando este teclado de substituição.
‫Portanto, substitua o vazio ITW mesmo dois ou semelhante ao que tínhamos aqui, onde também tínhamos este método.
‫Mas aqui usamos um teclado virtual.
‫Portanto, este teclado virtual permite que nossas subclasses, nossas classes herdadas dos filhos, usem a palavra
‫de substituição para basicamente substituir sua funcionalidade.
‫Se você ainda deseja chamar a funcionalidade de base da classe pai da classe animal, neste
‫caso, precisamos usar o DOT eat OK baseado, a base dirá OK chamou o método da base e a base ficará bem, você
‫vê aqui animal.
‫Assim, uma vez que você dê um duplo clique na base e ela seja destacada, você pode ver que o animal também está destacado
‫porque o animal é sua classe base.
‫Se você mantiver a tecla de controle HELT e clicar na base, ela pulará para a classe animal porque essa é
‫a classe base.
‫E você pode ver que há três referências de nossa classe base e isso está aqui, essa base, bem como
‫essa base e esse animal aqui no topo.
‫OK, então, neste ponto, estamos basicamente usando nossa classe base aqui, a funcionalidade da classe base.
‫Não estamos substituindo nada.
‫Basicamente, estamos dizendo que um cachorro é a mesma coisa que qualquer outro animal.
‫Portanto, nada de especial aqui.
‫Agora, vamos dar uma olhada no método de fazer sons, porque este vai ser bem diferente porque o cachorro
‫tem que fazer os sons da maneira certa e sua maneira de fazer sons vai ser woof.
‫Pode ser também woof ou quem quer que seja.
‫No entanto, seu cachorro gosta de fazer sons.
‫E é assim que, no meu caso, o cachorro vai fazer barulho.
‫Portanto, isso será diferente para cada animal.
‫OK, então cada animal fará a diferença.
‫E é por isso que estamos substituindo nosso som de fazer.
‫Bem, com bem, pode parecer que tínhamos aqui, estamos substituindo-o com nossa implementação individual para o
‫nosso cão.
‫E agora vamos fazer a mesma coisa com a brincadeira, porque o cachorro só quer brincar se estiver feliz, então vamos supor que
‫seja esse o caso.
‫Então, aqui, se olharmos para a brincadeira, diz que cachorro está brincando, mas não estou feliz com esse resultado.
‫Digamos que um cachorro só brinca se for um cachorro feliz.
‫Então o que podemos fazer é ignorar o jogo de palavras e verificar se o cão está feliz e só então brincar.
‫Portanto, já substituímos a funcionalidade do animal base pela funcionalidade.
‫Bem, com nossa própria funcionalidade para o cão ou nossa funcionalidade única para o cão onde adicionamos
‫uma condição.
‫Mas isso pode ser qualquer coisa.
‫Você não está limitado a uma condição.
‫Isso pode ser um tipo totalmente diferente de implementação.
‫Você nem mesmo precisa usar o jogo básico, então você está totalmente livre para usar o que quiser.
‫Por exemplo, no método make sound, você pode ver que não estamos usando o make sound porque, bem, no método
‫make sound, não há nada a ser chamado.
‫Portanto, não há nada de interessante aqui.
‫Mas, mesmo que houvesse, não precisamos chamar base para pegadas ou jogo básico.
‫Podemos implementar algo totalmente diferente aqui, se quisermos.
‫OK, então esse será o nosso cachorro.
‫Agora, vamos realmente salvar essas duas classes e trabalhar com elas em nosso arquivo CSS do programa.
‫OK, então aqui está, antes de mais nada, crie um cachorro assim vou chamar o cachorro, que será um
‫cachorro novo.
‫Que terá o nome de Siff e o cachorro vai fazer 50 anos, cachorro tão velho e lindo agora.
‫Podemos escrever algo como para que possamos acessar a propriedade do cão assim linha vermelha, nome do cão, para que
‫possamos obter o nome do cão e a idade do cão usando cão, nome do cão e ponto h do cão.
‫E então podemos, por exemplo, brincar e comer.
‫OK, vamos fazer isso bem rápido, brincar de cachorro, comer cachorro.
‫Então, vamos executar isso.
‫E pudemos ver cívicos, de 15 anos, surfistas jogando, surfistas comendo.
‫OK, então jogue e funcionou perfeitamente bem.
‫Claro, também podemos usar adulterado.
‫E faça som.
‫Então, isso faria o cachorro soar.
‫Vamos ver isso.
‫E você vê o estoque diz caixa.
‫Tudo bem.
‫Então, vamos recapitular rapidamente e ver como isso é diferente do exemplo que vimos no
‫último vídeo, então temos nossa classe base e sua classe base tem algumas propriedades, e também tem alguns
‫métodos de funções, então falar.
‫Portanto, aqui para fazer som, por exemplo, o método AED e assim por
‫diante, e os tornamos virtuais adicionando a palavra-chave virtual para torná-los mutáveis ou superexcitáveis na classe herdada.
‫Portanto, Dogs está deserdando uma classe ou subclasse, e essa subclasse nos permite agora sobrescrever um método específico
‫da classe base usando a palavra-chave override.
‫Então isso vai agora.
‫Substitua a funcionalidade para que ela substitua a funcionalidade ou o código do método atual, exceto que você, é claro,
‫use o espaço de cada um.
‫Então o que vai fazer é basicamente chamar o método eat da classe base, ou seja, do
‫pai.
‫Mas você está livre para implementar seu próprio código aqui.
‫Você não precisa chamar a classe base.
‫Você pode, é claro, adicionar condição para que a funcionalidade da classe base seja chamada em uma
‫condição específica.
‫Ou você pode escrever qualquer código que quiser dentro de seus métodos de sobrescrita e então outra coisa é
‫diferente.
‫E é isso que estamos adicionando código ao nosso construtor aqui para o nosso.
‫Subcláusula, OK, então este cão de classe herdado.
‫Por um lado está usando as mesmas propriedades que nossa classe base está usando, mas ao mesmo tempo tem uma implementação
‫própria, o que deve acontecer depois que um cachorro é criado?
‫Portanto, uma vez que um objeto cachorro é criado, no nosso caso, é apenas para dizer que o cachorro ficará feliz.
‫Tudo bem, para este vídeo é isso, vamos dar uma olhada muito mais em herança, é claro, porque ainda
‫há muito o que aprender.
‫Então nos vemos no próximo vídeo.