‫Neste vídeo, você aprenderá sobre herança em C Sharp ou programação em geral, vou tentar mantê-lo
‫super simples porque pode se tornar bastante complicado se você olhar para ele, porque há muita
‫coisa acontecendo.
‫Mas vou simplificar ao máximo, OK, porque a ideia de herança é realmente a capacidade de
‫reutilização do código.
‫E isso nos permite não apenas reduzir nosso próprio código, mas reduzir o código de outros desenvolvedores
‫ou mesmo de outros espaços de nome diretamente, sem ter que escrever muito código manualmente repetidamente, o que
‫estava lá antes.
‫E isso realmente reduz o código repetido ou redundante.
‫OK, então a ideia de herança é basicamente um conceito fundamental da programação orientada a objetos.
‫Ele permite que você defina uma classe filha que reutiliza ou herda, estende ou modifica o comportamento de uma classe
‫pai.
‫A classe cujos membros são herdados é chamada de classe base.
‫A classe que herda os membros da classe base é chamada de classe derivada.
‫OK, então o que isso significa?
‫Bem, em termos simples, se você tem mais de uma classe com o mesmo código
‫ou funcionalidade, mas é um pouco diferente, podemos colocar esse código repetido ou redundante em uma classe separada
‫e, então, fazer com que nossa classe herde dele.
‫Este código pode ser a funcionalidade do método, por assim dizer, ou propriedades, que são os atributos de
‫nossas classes.
‫Então, vamos dar uma olhada em um exemplo e, portanto, crio este um novo projeto aqui, que chamo de Demel de
‫herança.
‫Tudo bem.
‫Portanto, vamos examinar este exemplo.
‫Então, normalmente, quando você está trabalhando com várias classes, você prossegue e cria uma nova classe aqui.
‫OK, então vamos fazer isso aqui também.
‫Você poderia, é claro, criar a classe no mesmo arquivo, mas isso não é uma boa prática.
‫Então, vamos ligar para essa turma de rádio.
‫Tudo bem.
‫Então aqui está a classe dizer anúncio de rádio.
‫E agora temos essa aula de rádio, que tem o mesmo nome.
‫OK, então ambas as classes, o programa pergunta onde temos nosso método principal, que é o ponto de partida
‫de nossa aplicação e a classe de rádio estão da mesma forma.
‫Então, vamos ter duas aulas.
‫Um será rádio e o outro será TV.
‫Vamos apenas supor que temos algumas propriedades.
‫Então, por exemplo, um booleano que determina o estado do rádio é ele ligado e então a marca
‫do rádio, então é um Panasonic ou quaisquer outras marcas que existam.
‫E então temos um construtor simples aqui.
‫Portanto, você definitivamente deve ter uma compreensão dos conceitos básicos das classes.
‫Se você quiser entender completamente a herança, geralmente é algo que eu recomendaria entender antes de chegar
‫à herança, porque ela é construída em cima uma da outra.
‫OK, então eu quero ter dois métodos porque basicamente será a funcionalidade.
‫Então um vai ligar o rádio, será o método de ligar e o outro será o método
‫de desligar.
‫Portanto, você pode ligar e desligar o rádio ou ligá-lo usando esses dois métodos.
‫E então teremos outro método que nos permitirá ouvir rádio.
‫OK, então temos este método aqui chamado Listen Radio e ele irá verificar.
‫O rádio está ligado agora?
‫Então, isso é propriedade aqui, esse booleano, vai ser de fato, é verdade?
‫E se isso for verdade, então podemos ouvir o rádio e a forma como iremos indicar que estamos
‫ouvindo o rádio será apenas com esta instrução da linha vermelha do console dizendo ouvir o rádio e,
‫caso contrário, iremos imprimir esta mensagem de erro informando que o rádio está desligado.
‫Ligue-o primeiro.
‫OK, então antes de podermos ouvi-lo, precisamos ligá-lo.
‫Tudo bem.
‫Então esse é o nosso rádio agora.
‫Agora, imagine que você tem outra aula, que vai ser.
‫A TV.
‫OK, então vamos prosseguir e criar uma nova classe e, portanto, você pode ir aqui para adicionar e adicionar classe
‫e dar um nome a ela.
‫Vou chamar de TV.
‫E agora nesta aula, irei em frente e terei algumas propriedades semelhantes às que tínhamos aqui.
‫Então, basicamente, terei também os estados se estiver ativado ou desativado.
‫Então, vamos adicionar essas duas propriedades aqui.
‫Então terei um construtor simples que me permite definir esses valores quando estou criando um novo objeto
‫de TV.
‫Então aqui está ele, bem como String Brand, que define as propriedades.
‫Depois, terei de fazer outros métodos individuais para poder ligar a TV e desligá-la, semelhante ao que fiz no
‫rádio, para poder basicamente copiar este código.
‫Mas vai ser um pouco diferente porque a gente teve os comentários que diziam rádio aqui, mas agora isso vai
‫ser TV.
‫Portanto, este método irá ligar a TV e este irá desligá-la ou desligá-la.
‫OK, então só precisamos de um outro método que nos permita assistir TV e ele fará algo muito semelhante ao
‫que nosso rádio faz.
‫Permite-nos ver televisão apenas se a televisão estiver ligada.
‫Se estiver desligada, primeiro precisaremos ligar a TV.
‫OK, agora temos essas duas classes e, se você olhar para elas, elas são terrivelmente semelhantes.
‫Portanto, há muitas coisas que são exatamente iguais, basicamente porque essa propriedade está ligada tão bem quanto
‫esta marca.
‫Eles são os mesmos.
‫Nós os temos em ambas as classes.
‫Basicamente, temos código redundante.
‫Temos que copiar e colar um monte de código e é mais ou menos o mesmo.
‫Então, como podemos fazer com que não tenhamos que copiar e colar uma grande quantidade de código e reescrever código e, basicamente, ter
‫código redundante?
‫Bem, esse é o ponto principal do conceito de herança.
‫Portanto, a herança vem ao resgate.
‫Podemos resolver esse problema criando uma terceira classe chamada dispositivo elétrico.
‫Isso conterá todas as funcionalidades e propriedades compartilhadas de um dispositivo elétrico que temos.
‫Então, vamos dar uma olhada nisso.
‫Quais são os que temos que são iguais?
‫Então, quais são as propriedades que são iguais para a nossa TV e também para o rádio?
‫Bem, no nosso caso, todas as propriedades, na verdade, mas não precisa ser todas elas neste
‫caso.
‫Será porque não temos mais propriedades.
‫Mas as duas propriedades que temos lá serão as mesmas.
‫Então está ligado e Brent são propriedades que existem na TV e também no rádio.
‫Portanto, nossa nova classe deve ter essas duas propriedades.
‫E então temos os dois métodos que nos permitem ligar a TV e ligar o rádio ou desligar o rádio e
‫desligar a TV também.
‫OK, então para você, um pouco de exercício se você quiser tentar isso, porque eu presumo que você não seja uma função e
‫programação nesse ponto, mas você se sentirá muito mais confiante quando tentar isso.
‫Portanto, vá em frente e crie uma classe que tenha todas essas propriedades e esses métodos para que possamos mostrar tudo o que é
‫compartilhado entre as duas classes, crie-as em uma classe separada e chame essa classe de dispositivo
‫elétrico.
‫Na verdade, você pode chamá-lo como quiser, mas vou chamá-lo de dispositivo elétrico como tal.
‫Ok, então espero que você poste o vídeo e tenha experimentado, então vou criar uma nova classe e, por falar nisso, é
‫claro, você vê que pode usar o controle de atalho Casey.
‫Então vamos fazer isso nesse caso, controle, entendeu?
‫E isso vai abrir essa janela aqui e me deixar mudá-la para elétrica.
‫Dispositivo assim, e agora este vidro terá as propriedades que estamos compartilhando entre as duas outras classes, então
‫colocamos aqui, o booleano que determina o estado do dispositivo elétrico, está ligado
‫ou não?
‫E então a marca do dispositivo.
‫E então, é claro, precisamos ter um construtor.
‫Então, o dispositivo elétrico está ligado.
‫E Brent e finalmente, temos a funcionalidade que são métodos.
‫Então, sempre que você tem funcionalidade, você os coloca em métodos e a funcionalidade é
‫ligar ou desligar algo.
‫Portanto, sempre que houver uma ação acontecendo com sua classe ou com o objeto que você está usando,
‫você precisará usar métodos.
‫Novamente, é isso que estamos fazendo aqui.
‫Então, estamos usando um método para ligar algo, neste caso, o dispositivo elétrico e desligá-lo
‫ou ligá-lo e desligá-lo.
‫Ok, então é basicamente isso que estamos fazendo aqui.
‫Portanto, agora que temos nossas propriedades e métodos de compartilhamento em uma classe, vamos
‫fazer a outra classe das classes TV e rádio herdadas dessa classe ou, em outras palavras, estender essa classe.
‫OK, então este é apenas um termo diferente que você pode usar aqui.
‫Portanto, nossa TV e nosso rádio agora estenderão a classe de dispositivos elétricos.
‫Então, como podemos fazer isso?
‫Bem, vamos começar com o rádio, porque a TV será então um pequeno desafio para você onde
‫você terá que fazer isso sozinho.
‫Então aqui você usou dois pontos e o nome da classe que deseja herdar de dispositivo elétrico é
‫a classe que herdarei por rádio agora, de onde nosso rádio estenderá a funcionalidade da classe
‫de dispositivo elétrico.
‫OK, então dois pontos e o nome da classe que você deseja estender e o que
‫é importante, é claro que essa classe deve estar no mesmo espaço de nome ou você tem que adicionar o espaço de nome
‫aqui.
‫Portanto, em nosso caso, não estamos usando nenhum desses.
‫Estamos apenas usando o sistema.
‫Mas como estamos no mesmo espaço de nome, então a classe de dispositivos elétricos está no mesmo espaço de nome que
‫rádio e TV, podemos simplesmente fazer assim.
‫Mas agora podemos ver que nosso boliano tem um alerta aqui.
‫Então, quando você passa o mouse sobre o seu I. D. , então o Visual Studio dirá a você que o Radio Dot está no máximo.
‫Dispositivos elétricos de membros herdados estão em uso.
‫A nova palavra-chave se a intenção era ocultá-la.
‫Então, basicamente, estamos usando o mesmo nome de propriedade e aqui você quer evitar isso porque você tem essa propriedade, por assim
‫dizer, já porque você a está herdando do dispositivo elétrico.
‫Portanto, agora você pode simplesmente ocultá-lo ou substituí-lo por este que você criou aqui.
‫Se você quiser usar algo com exatamente o mesmo nome, mas deve se comportar de alguma forma diferente, então você pode
‫fazer isso, mesmo que seja uma boa prática depende necessariamente do caso de uso, é claro.
‫Então, isso ocorre porque agora a classe de rádio contém duas propriedades com o mesmo nome que estamos ocultando ou cobrindo.
‫Esse é um termo diferente aqui, as propriedades que herdamos da classe de dispositivos elétricos.
‫Portanto, removeremos o código redundante de que não precisamos mais.
‫Então, vamos nos livrar disso.
‫E, claro, o código redundante não está apenas atribuindo ou criando as propriedades, mas também tendo esses
‫métodos aqui.
‫Então, vamos nos livrar deles também.
‫Agora, temos outro erro que aparece aqui, e é este construtor de rádio que parece ter um
‫problema.
‫Ele diz que não há nenhum argumento fornecido que corresponda ao parâmetro formal exigido é on de dispositivo elétrico,
‫corda de arco de dispositivo elétrico.
‫Então, o que é este dispositivo elétrico, aquele dispositivo elétrico em corda?
‫Bem, é este aqui.
‫É este construtor.
‫Uma vez que todas as propriedades vêm da classe base e nossa classe base contém um construtor, podemos
‫usar a palavra-chave base para passar nossa classe base, seus argumentos de construtor, porque essas são as duas únicas propriedades
‫que temos e nosso construtor na classe filha irá tem um corpo vazio.
‫OK, isso é muita conversa.
‫Mas basicamente o que isso significa é que porque nosso construtor de rádio não é mais complexo do
‫que o básico, podemos simplesmente seguir em frente e dizer base.
‫E aqui está e Brent.
‫Assim, não precisamos de um corpo para nosso rádio, então este construtor basicamente dirá que o está ligado,
‫bem como as propriedades da marca que são passadas para o objeto de rádio que,
‫quando é criado, passa para o dispositivo elétrico construtor, porque basicamente nosso rádio é herdado de um dispositivo elétrico
‫e, portanto, podemos fazer isso.
‫Podemos simplesmente passar para o dispositivo elétrico.
‫E o que isso fará é basicamente definir se as propriedades estão ativadas e também imprimir com base nos
‫valores passados.
‫OK, então é isso.
‫A parte mais complicada, mas o poder aqui é realmente que não temos que construir
‫código redundante e, bem, o trabalho é feito para nós, então isso realmente nos economiza muito tempo e também escrevendo código.
‫Em um exemplo posterior, veremos como usar o corpo do construtor na classe filha para
‫inicializar suas próprias propriedades exclusivas, para enfatizar novamente a classe de rádio aqui.
‫É nossa classe infantil.
‫OK, então a classe herdada e o dispositivo elétrico são nossa classe pai, então a classe base.
‫Então, vamos herdar, então nosso rádio herda de dispositivo elétrico, então a criança herda dos pais, basicamente seus pais têm um
‫certo DNA e você tem o mesmo DNA, mas você terá um pouco mais,
‫por assim dizer.
‫Então é assim que você pode pensar sobre isso.
‫Tudo bem.
‫Então agora um pequeno desafio para você.
‫Ajuste a classe de TV para que também herde de dispositivos elétricos.
‫Tão positivamente.
‫E tente isso, por favor.
‫Tudo bem.
‫Espero que você tenha tentado.
‫Primeiro, precisamos adicionar o dispositivo elétrico Polan, então podemos nos livrar do código redundante.
‫Portanto, o código repetitivo, porque já o temos em nossa classe base.
‫E isso significa que também podemos usá-lo em nossas aulas de TV diretamente.
‫E agora também podemos ajustar isso aqui, dizendo que vamos passar os dados para nossa classe base.
‫E, claro, não precisamos definir isso aqui também.
‫Mas, como disse no último exemplo, veremos como ainda podemos usar o corpo com eficiência.
‫E vai ser basicamente isso.
‫Agora, podemos simplesmente seguir em frente para nosso programa, arquivo CSS e realmente verificar nosso código aqui.
‫E ao verificar o nosso código, quero dizer criar objetos do nosso rádio e testá-lo.
‫Então, vamos em frente.
‫Um objeto de rádio.
‫Vou chamar este no meu rádio e este será um novo objeto de rádio.
‫Claro, eu preciso passar se está.
‫Então, vou ser desligado no início e vou dizer que vai ser feito pela Sony.
‫Portanto, a marca será Sony.
‫Agora posso acessar as propriedades.
‫Vocês podem ver aqui apenas para o Eitam, as propriedades do meu próprio rádio, qual é a marca
‫e que está na propriedade e também posso acessar seus métodos.
‫Então ligue, desligue.
‫Ouça, rádio.
‫E então você também pode ver que existem alguns métodos que nunca criamos por nós mesmos que
‫estão lá desde o início porque cada classe herda da classe de objeto e a classe de objeto tem um método
‫de duas strings, bem como um tipo get get code e é igual ao método.
‫OK, então esses métodos, eles estão lá para cada classe que você está criando em
‫C Sharp porque basicamente não os vemos, mas internamente ele herda da classe de objeto assim, então cada classe herda da classe de
‫objeto e é por isso que temos esses métodos diferentes.
‫Mas agora vamos primeiro ligá-lo.
‫Então aqui, ligue.
‫Isso ligará nosso rádio e agora podemos ouvir nosso rádio, então ouça meu rádio, ouça rádio.
‫Agora, vamos rodar isso, e isso nos permitirá ouvir nosso rádio.
‫Então aí estamos ouvindo rádio, então ligamos o rádio, vamos agora não ligar o rádio
‫e ouvir rádio e vai dizer rádio desligado.
‫Ligue-o primeiro.
‫Tudo bem, então agora.
‫Vamos fazer a mesma coisa com nossa TV.
‫Vamos em frente e criar um objeto de TV.
‫Vou chamar isso na minha TV, que será um novo objeto de TV, e este também será desligado e
‫será um dispositivo Samsung.
‫E agora vamos usar minha TV, aquele interruptor para ligá-la.
‫E isso é chamado de método assistir TV.
‫Tipo, agora vamos rodar isso e veremos que agora nossa TV está ligada e estamos assistindo enquanto
‫ouvimos rádio.
‫É uma tarefa e tanto.
‫Mas basicamente nosso código faz o que queremos.
‫Agora você vê que chamamos o método de ligar para o rádio e também para a TV, embora se olharmos
‫para a classe TV, ela não tenha esse método.
‫Portanto, ele não tem um interruptor ligado.
‫Bem, ligue ou desligue o método.
‫O rádio também não tem esses métodos, mas isso é porque eles são
‫herdados do dispositivo elétrico, que tem esses métodos ligar e desligar que podemos usar.
‫Então, basicamente aqui estamos usando o método da classe base.
‫Então aqui está o método da classe base.
‫E aqui estamos usando o método da classe filha.
‫Portanto, o método de ativação vem do plus pai e o método de assistir TV vem do plus filho.
‫Portanto, agora podemos criar o código que é único para a classe e não é repetitivo, por assim dizer, diretamente na aula de
‫TV, bem como na aula de rádio.
‫Mas tudo o que é igual e será relevante para dispositivos elétricos em geral é algo que
‫podemos criar aqui.
‫Herança é muito mais e, é claro, veremos tudo isso ao longo deste
‫capítulo.
‫Então nos vemos no próximo vídeo.