‫Bem-vindo de volta a este vídeo, é tudo sobre herança, e vamos prosseguir
‫e criar uma classe que irei chamar de post, então uma nova classe será um post.
‫Então imagine isso sendo uma postagem em mídia social, como uma postagem no Twitter ou no Facebook ou qualquer tipo de
‫postagem.
‫E a ideia é que eu quero herdar do post e criar algo como um post de imagem ou depois um
‫post de vídeo.
‫E esse tipo de coisa nos permitirá entender um pouco melhor o conceito de herança.
‫E você pode aplicar isso a diferentes objetos em diferentes situações no futuro.
‫Primeiramente, um post tem uma variável, que irei tornar privada estática no ID do post atual.
‫Então este vai ser um campo daquela postagem e é estático.
‫Portanto, também está disponível fora deste post e será criado assim que o aplicativo for iniciado.
‫Direito.
‫Portanto, o que podemos fazer é, em primeiro lugar, criar algumas propriedades.
‫E agora a ideia por trás das propriedades, como você sabe, é que elas fornecem mais informações sobre
‫o objeto.
‫Direito.
‫Então, no nosso caso, se eu criar um objeto de postagem, existem certas informações que realmente queremos ter.
‫Por exemplo, queremos saber o ID tão bem quanto um edman, como um programador, não tanto porque um usuário e usuário
‫não está interessado no ID do post, mas como um administrador ou como o programa que você deveria estar, porque
‫todo post deveria ser identificado e deve ter um ID único.
‫Então, vamos ter IDs, precisamos de um título.
‫Por exemplo, o Post tem um título, talvez uma descrição ou texto, algo assim.
‫Então, precisamos saber quem enviou essa postagem e se ela deve ser pública ou não.
‫Claro, há muito mais para saber sobre a postagem, então pode haver muito mais propriedades
‫na postagem, mas vamos mantê-lo simples por enquanto.
‫Então, vou criar as propriedades protegidas aqui.
‫E ainda não usamos propriedades protegidas.
‫Mas no final, proteger significa que isso só pode ser usado por esta classe, mas uma pós-classe e quaisquer classes
‫derivadas.
‫Portanto, classes que derivam da postagem.
‫Vou prosseguir e criar o primeiro, que será o ID.
‫Portanto, vamos usar get e set.
‫Em seguida, outra propriedade, então vou usar um prop aqui e deve ser uma string
‫e vou chamá-la de título e como antes, ela deve ser protegida, então nossa propriedade e vou usar a string novamente
‫e este será enviado por nome de usuário.
‫Então, quem o enviou?
‫E também será protegido.
‫E, finalmente, uma propriedade chamada é pública.
‫Portanto, é um booleano porque só pode ter dois valores.
‫Portanto, ou é público ou não é público.
‫Portanto, temos simplesmente essas propriedades.
‫Direito.
‫Portanto, agora criamos um construtor padrão e há algo a saber sobre o construtor padrão, se derivado,
‫se uma classe de rascunho não invocar um construtor de cláusula base explicitamente, o construtor padrão
‫é chamado implicitamente.
‫É por isso que criamos um aqui.
‫Então, criamos uma postagem pública.
‫E agora essa postagem vai ficar bem, porque não temos nenhum parâmetro aqui.
‫Será definido ou iremos definir os valores aqui.
‫Portanto, será zero.
‫Então o título é, por exemplo, meu primeiro post ou talvez com espaços vazios.
‫Primeiro post assim, então é público?
‫Bem, digamos verdadeiro porque queremos vê-lo e enviar por nome de usuário.
‫Bem enviado por mim.
‫Então, o entrevistado neste caso.
‫Então, sempre que criarmos uma postagem agora, será apenas essa postagem aqui.
‫Então vai ser meu primeiro post.
‫Nesse momento quero ter outra instância, construtor que tenha vários parâmetros.
‫Então, eu quero criar postagens onde possa definir essas coisas.
‫Não defino o ID, mas posso definir o título.
‫Posso dizer se é público e se é enviado por qual nome de usuário.
‫Então você pode imaginar isso.
‫Digamos que você escreva um pequeno programa de mídia social e deseja ter a capacidade de postar e,
‫em seguida, precisa enviar essas informações sempre que criar uma postagem.
‫Assim, o usuário cria uma postagem e obtém um ID definido automaticamente, em seguida, obtém um definido automaticamente onde obtém um
‫título definido com base no que o usuário inseriu.
‫É público com base no que o usuário marcou, se ele decidiu torná-lo público ou não, e
‫é enviado por ele.
‫Então, são apenas dados que são fornecidos quando cada postagem é criada.
‫Portanto, agora vamos criar um construtor de instância com três parâmetros.
‫Vou criar uma postagem pública e aqui vou usar a string title bool is public e string
‫send by username.
‫E aqui vou definir o ID e para isso vou precisar de algo.
‫Então, vou apenas defini-lo como zero agora.
‫Mas vou precisar de um método adicional que sempre criará um novo ID para cada postagem.
‫Veremos como isso funciona em um segundo.
‫Portanto, este título será o título enviado.
‫Meu nome de usuário será enviado por nome de usuário com uma letra não anotada aqui e este que
‫for público será público e não da propriedade, mas deste parâmetro.
‫Então agora eu disse que não quero que seja zero.
‫A ideia deve ser única.
‫Portanto, a melhor maneira é criar um método que será protegido e é chamado get next.
‫O que isso fará é simplesmente retornar o próximo ID, o que significa o ID da postagem atual e aqui nós
‫incrementamos antes disso.
‫Então, cada vez que for chamado, ele vai se incrementar em um.
‫Portanto, este aqui, o ID do post atual será aumentado em um.
‫Portanto, agora, em vez de definir zero aqui, vamos chamar o próximo ID ou obter o próximo método de ID.
‫Agora, o que mais você gostaria de ter em um programa onde você pode postar algo enquanto eu acho que
‫a capacidade de ajustar uma postagem?
‫Então, por enquanto, nós criamos um post e ficaríamos muito infelizes se não pudéssemos mudar esse post.
‫E bem, isso é algo que realmente acontece.
‫E eu acho que Snapchat que você cria uma imagem e aí está, você pode editar essa imagem.
‫Não tenho certeza se você pode editar o texto, mas aqui queremos ser capazes de editar o
‫texto, então criaremos um novo método, public void update, e que deve levar o título.
‫E a tigela é pública porque, se você pensar a respeito, o que o usuário deve ser capaz de atualizar?
‫Ele não deve conseguir o ID, nem deve ser capaz de atualizar o nome de usuário porque foi enviado por
‫ele.
‫Então ele tem um nome de usuário e não deve ter impacto na atualização de uma postagem.
‫Então, aqui, vamos apenas atualizar a postagem e isso significa que vamos apenas mudar o título e mudar o
‫booleano, que é se é público ou não.
‫E aqui nós simplesmente dizemos que este título será um título e este que é público será tão público
‫quanto os meios que temos aqui.
‫Um post post é um blueprint, enquanto esta classe é um blueprint de qualquer instância post.
‫Portanto, sempre que postamos algo que é aquele mesmo, essa instância é a postagem e se mudarmos seu título,
‫mudamos o título dessa postagem específica.
‫E se mudarmos, seja público ou não, mudamos a publicidade desse post específico.
‫OK, então isso nos permite atualizar o título e sua publicidade de uma postagem existente.
‫Portanto, agora o próximo que desejo criar é uma substituição de método virtual de duas strings que é herdada
‫do sistema desse objeto.
‫Então sistema, esse objeto é uma classe que vem aqui no sistema.
‫Então, podemos usar isso.
‫Está dentro de dó sustenido e podemos simplesmente usar isso.
‫E há um método chamado string ou, na verdade, a partir daí podemos chamar o método de duas strings.
‫Portanto, sistema, o objeto tem um método de duas strings, e queremos sobrescrever
‫isso porque cada classe, então nossa classe também, está herdando dessa classe de objeto.
‫Portanto, sistema, esse objeto é uma classe da qual podemos herdar.
‫Então, aqui, esse objeto, por exemplo, podemos herdar disso ou, na verdade, todas as classes herdam disso.
‫Portanto, agora o que podemos fazer é substituir um de seus métodos.
‫Portanto, string de substituição pública e duas strings, como você pode ver, ela já propõe isso.
‫Portanto, ele diz que retorna a string que representa o objeto atual que algo que está dentro da classe de
‫objeto.
‫E como você pode ver, existe algo chamado Return Bayes to string.
‫Portanto, a classe base tem um método de duas strings.
‫E se simplesmente fizermos isso, então isso praticamente não significará nada, porque simplesmente usaremos o
‫método de duas strings da classe base de qualquer maneira.
‫Mas podemos alterá-los para que possamos ajustar em vez de retornar o que quer que a classe base retorne.
‫Queremos fazer nossas próprias coisas.
‫Então, vamos usar string nesse formato para formatar uma string, que terá certas
‫informações.
‫Então vai ser a ideia, vai ser o título e quem vai mandar.
‫Então, vou usar esse tipo de informação como essa.
‫Então vai ser esse ID.
‫Então a ideia é esse o título e por último esse enviado por nome de usuário.
‫Então é isso que vai voltar.
‫Portanto, sempre que usamos string, ela não retornará simplesmente algumas informações sobre o objeto, mas
‫a retornará no formato padrão ou em nosso formato que criamos.
‫Então esse é o nosso formato, certo.
‫Então.
‫Vamos criar um objeto dessa classe, então vamos prosseguir em nosso programa e então vamos criar um
‫post.
‫A postagem um é nova postagem, e aqui posso inserir algumas informações onde posso deixá-las.
‫Então, se eu deixar, esse é o construtor padrão que será chamado.
‫Então aquele aqui.
‫E se eu não fizer isso, um diferente será chamado.
‫Então, digamos que eu postei algo.
‫Obrigado pelos desejos do dia do nascimento.
‫Então todo mundo me desejou feliz aniversário.
‫Vou apenas dizer muito obrigado e quero passar por isso porque quero que meus amigos vejam, então
‫deve ser público.
‫E então Dennis Pan, Utah, é quem está enviando.
‫Claro, poderíamos ter uma classe de usuário que faz todo o manuseio e poderíamos simplesmente verificar quais usuários
‫logaram ou algo assim.
‫Mas, por enquanto, usamos apenas uma string codificada aqui.
‫Então, será Dennis Bunnytown.
‫Então esse é um novo post que temos aqui.
‫E agora podemos prosseguir e escrever isso no console.
‫Então S. C. e direi post ponto a string e aqui, é claro, postar um.
‫Então, nossa pós-instância.
‫Portanto, esta é a nossa pós-instância.
‫E chamei o post um e ele vai escrever algo em um console.
‫E como queremos ver o que é, precisamos realinhar aqui.
‫Portanto, queremos apenas manter o console aberto para que possamos ver o que está acontecendo lá e que, como você
‫pode ver, somos um, obrigado pelo aniversário, que é de Dennis Pennetta.
‫E essa é a ideia desse post.
‫Então isso significa que nosso post aqui.
‫Este recebe um novo ID e o novo ID será zero mais mais um ou mais um, o que significa que é
‫apenas um.
‫É por isso que temos este aqui.
‫Então a ideia é uma, postar informações.
‫E foi ele quem o enviou, Pontotoc.
‫Portanto, agora temos um post e vamos em frente e usar a herança, porque até agora, exceto talvez
‫por essas duas strings aqui, na verdade não há herança.
‫Então, na verdade, só para você.
‫Então, você sabe o que eu disse antes, substituição do método virtual do método de duas strings que é herdado
‫do sistema desse objeto.
‫Portanto, agora vamos criar uma nova classe.
‫E esse será postagens de imagens porque, bom, até agora só podemos postar certos textos enquanto simples, mas
‫no futuro também queremos postar imagens.
‫E agora essa postagem de imagem deve ser uma aula de condução de nossa postagem de classe base, porque esta classe aqui é uma classe muito
‫simples e queremos ir em frente e herdar dela.
‫Portanto, para herdar de outra classe, você usa Kolon e, a seguir, insere o nome da classe da qual
‫deseja herdar.
‫Então, eu quero herdar da postagem.
‫E o que isso me permite é usar todas as suas funcionalidades.
‫Isso é algo muito legal porque agora ele pode usar suas propriedades.
‫Posso usar suas variáveis, exceto seu construtor aqui.
‫E sim.
‫Então, vamos fazer isso e estender a postagem da imagem.
‫Como você sabe, ele deriva de uma postagem e agora deve ter outra propriedade chamada URL da imagem e dois
‫construtores.
‫Então é isso que quero acrescentar.
‫Portanto, primeiro preciso de uma propriedade aqui e será uma string chamada imagem.
‫Você é l que será a imagem que você url da postagem de imagem.
‫Então, digamos que postamos algo e há uma imagem nela, então é automaticamente ou deveria ser uma postagem
‫de imagem e precisa ter um URL de imagem.
‫Portanto, um local onde essa imagem é armazenada que pode ser em nossos servidores ou simplesmente na Internet.
‫Então, o que quer que esteja lá, temos essa necessidade de ter o URL da imagem para uma postagem de imagem.
‫Agora vamos criar um post de imagem pública de construtor muito simples
‫assim.
‫Nada mais.
‫Como você pode ver, não há nada lá.
‫Eu não quero fazer nada aqui.
‫E então criei outro post aqui, ou construtor de post de imagem, mas desta vez quero alguns parâmetros aqui.
‫Então, vai ser uma string de título de string enviada por imagem de string de nome de usuário seu URL e, na verdade, você é
‫L e Boulle é público, então eu quero ter tudo isso.
‫E agora na postagem da imagem, quero definir a ideia novamente.
‫Este ID de pensamento é igual a obter o próximo ID e isso é algo que já é muito legal.
‫De onde diabos essa ideia vem e de onde vem essa ideia?
‫Bem, está vindo do correio.
‫Portanto, estamos pegando esse método aqui, esse método protegido.
‫Podemos simplesmente chamá-lo aqui.
‫Podemos usá-lo como se fosse nosso.
‫Portanto, nem mesmo precisamos dizer algo como post-point get next ID.
‫Dizemos simplesmente para obter a próxima ideia.
‫E a mesma coisa para este ID.
‫Portanto, cada postagem de imagem tem um ID, a mesma coisa que a própria postagem.
‫E isso também vale para o título.
‫Portanto, o título será o título.
‫Em seguida, eles começam a enviar por nome de usuário e vão ser enviados por nome de usuário.
‫E, finalmente, isso é público, vai se tornar público agora.
‫Isso é bem legal.
‫Podemos usar essas coisas.
‫Isso é ótimo.
‫E agora também temos nossa própria propriedade, que é o URL da nossa imagem, e temos isso aqui.
‫Portanto, sempre que uma postagem de imagem é criada, o URL da imagem deve ser fornecido como um argumento.
‫Portanto, dizemos que o URL da imagem será o URL da imagem.
‫Portanto, por um lado, temos aquele herdado da postagem.
‫Então, vou acrescentar que aqui e por outro lado, temos aquele que é nosso próprio membro, então a property image é
‫membro do Image Post, mas não do post.
‫E isso é algo importante.
‫Portanto, o Post não sabe sobre o URL dessa imagem e isso não importa, mas nosso post de imagem conhece todas
‫as propriedades de nosso post.
‫Então isso é herança.
‫Agora, uma coisinha sobre esse post de imagem aqui, então.
‫Os construtores são necessários, aqueles dois, porque nenhum dos construtores chama uma classe base.
‫Portanto, não usamos essa base sem chamar o construtor da classe base e o construtor padrão
‫e a classe base é chamada implicitamente porque não a chamamos explicitamente aqui.
‫Portanto, nem neste e nem neste, o da classe base, o construtor.
‫Portanto, esse construtor padrão deve ser chamado ou deve haver um construtor base em nossa postagem.
‫É por isso que o criei, porque você deve estar se perguntando, por que precisamos disso?
‫Por que está aí?
‫Bem, é necessário porque não o chamamos explicitamente de que está ativado e ele será implicitamente chamado.
‫Direito.
‫Excelente.
‫Então é isso.
‫Vamos prosseguir em nossa classe de programa e criar uma dessas postagens.
‫E vou criar um post de imagem agora e vai ser um novo post de imagem e realmente dar a você o
‫nome.
‫Vou chamá-lo de Postagem de Imagem um.
‫Vai ser uma nova postagem de imagem.
‫E vou verificar os meus sapatos novos porque comprei uns sapatos novos e são terrivelmente fantásticos.
‫E quem manda?
‫Bem, então é super penetrável.
‫O burburinho sobre seus novos sapatos.
‫E, claro, ele precisa ter um link para essas imagens enquanto ele acabou de enviar a imagem.
‫Mas a própria imagem tem um link porque está armazenada em algum lugar em nosso armazenamento, ou em nossos servidores.
‫Portanto, será um https seguro.
‫E vou apenas falsificar um link aqui.
‫Vou chamar de imagens, sapatos ponto com slash e, bem, ele tornou isso público.
‫Então é verdade.
‫E vamos colocá-lo na próxima linha para que seja mais fácil de ler.
‫Então agora temos nossa postagem de imagem.
‫E o que podemos fazer com a postagem da imagem agora é escrever algo no console novamente para ver o que
‫está acontecendo.
‫E vou chamar o post de imagem de um ponto a string, e isso de novo, algo que é muito legal.
‫Portanto, chamamos esse método de duas strings em nossa imagem.
‫Poste um.
‫E você vê um método de string aqui?
‫Eu não.
‫E isso é legal porque pegamos um do nosso post.
‫Então, herdamos do post e agora pegamos seu método, que é chamado de string.
‫E se executarmos isso.
‫Na verdade, precisamos parar de executá-lo.
‫Porque não veremos, há uma leitura e se foi.
‫Portanto, precisamos pegar essa linha vermelha e colocá-la bem aqui.
‫Então, vamos executá-lo novamente.
‫E diz, dê uma olhada nos meus novos sapatos Dennis Punnet.
‫Mas onde está o link que preciso vincular?
‫Vamos, me dê o link.
‫Bem, não está lá porque o método de duas cadeias de nossa postagem não conhece links.
‫Não tem ideia sobre links.
‫Não importa quais links.
‫Não precisa de nenhum.
‫Então, um pequeno desafio para você.
‫E é assim que vamos terminar o vídeo.
‫Por enquanto, crie um método de duas strings dentro de nossa postagem de imagem que também nos informe sobre o link.
‫Tudo bem, espero que você tenha tentado, então o que vou fazer é mantê-lo simples.
‫Vou copiar as duas strings daqui para a sua postagem de imagem e vou mudar o formato um
‫pouco.
‫Vou adicionar uma pequena declaração aqui, então, também, vai ser o link e três ainda vai ser o
‫usuário, então precisamos do link aqui para que eles iniciem a imagem do seu URL Karma.
‫Então o pedido é Edem, titule seu URL e depois enviado pelo usuário.
‫Então, se você fizer isso, nós sobrescrevemos da classe base, então sobrescrevemos as duas strings de nossa postagem que
‫sobrecarregaram esse objeto do sistema.
‫Portanto, você pode ver que pode substituí-lo e substituí-lo e assim por diante, e veremos onde está o limite ou
‫como podemos limitá-lo.
‫Então, agora vamos executá-lo.
‫E podemos ver os meus sapatos novos, aqui está o link, Dennis, para que eu possa clicar no link na conta
‫do console.
‫Mas geralmente eu poderia clicar no link e ver a imagem ou minha ferramenta.
‫Meu aplicativo, por exemplo, poderia ler esse link e mostrar a imagem.
‫Tudo bem.
‫Então, esse é um primeiro vislumbre de herança foi um longo vídeo.
‫Eu sei que.
‫E herança é muito mais do que isso.
‫E veremos coisas muito mais legais.
‫Mas antes de tudo, vamos abordar um desafio no próximo vídeo.
‫E até o próximo vídeo.