CURSO DE JAVA PARA INICIANTES - STATIC - PROGRAMAÇÃO EM JAVA #36
6.28k views2582 WordsCopy TextShare
Tiago Aguiar
Outro recurso da linguagem de programação java são os método estáticos (static method).
Essa é uma p...
Video Transcript:
O opa seja muito bem-vindo seja muito bem-vinda Thiago Aguiar aqui morro de velcro e vamos continuar com a nossa série do curso de Java e nesse vídeo eu quero te explicar um dos fundamentos mais importantes aqui das palavras privadas que tem dentro do Java que a palavra static tá a gente já brincou com algumas coisas aqui desde o começo do curso a gente já utilizou o método bem a gente já utilizou as nossas classes com algumas funções estáticas e a gente já criou alguns objetos aqui que não são estáticos Então vamos lá o que que é esse tal desse estética em que a gente coloca em todas as funções e cada posição que você coloca na classe tem um fundamento no método tem outro fundamento e na variável Possivelmente vai ter um outro fundamento Tá mas a mesma palavra e eu quero começar explicando sobre os métodos que a sua grande maioria noventa porcento dos casos que você vai usar Então vamos lá antes de começar explicar estática eu tenho que reforçar o fundamento de orientação Ah tá então o que que é uma classe o que que é um objeto de novo a classe é um molde responsável por criar múltiplos objetos então por exemplo se você quiser criar um um botão com as bordas arredondadas e o fundo verde ou um botão sem bordas arredondadas e o fundo vermelho os dois são botões e esses dois botões vão surgir a partir de um molde uma esse morde e a sua classe tá da mesma forma como a gente tem aqui usuários né então se você tem no seu banco de dados no seu sistema é tenta usuários você simplesmente precisa de uma classe usuário e dessa classe usuário vai ser responsável por instanciar por gerar objetos do tipo usuário com as propriedades diferentes a mesma forma como a gente fez as aulas passadas então se eu quiser ter por exemplo meu banco usuário que cê user a com o nome Oi Tiago Oi e o sobrenome Aguiar e depois eu criar um usuário no meio b usuário B com o nome por exemplo César Aguiar Então a gente vai ter dois objetos tá que saiu a partir de um molde A diferença é que as suas propriedades são diferentes aqui o primeiro nome é uma coisa que o primeiro nome é outra coisa Tá e o segundo nome também poderia ser diferente Ou não então de novo uma classe ainda na mais é do que um objeto vivo no seu sistema uma forma de a gente trazer em existência algum problema do mundo computacional para resolver no mundo computacional e eles são surgidos né eles são instanciados são criados a partir de morte que é a classe Beleza então esse é o fundamento básico de orientação objeto todo objeto vai ter propriedades que a gente já declarou aqui duas propriedades do tipo de estricção textos e a gente criou a propriedade primeiro nome último nome e também tem comportamento né mudança de comportamentos que são métodos que alteram algum valor alguma lógica tanto método de alteração método Setter ou método get ter que são métodos que busca informação de um objeto tá então esses métodos eles não são estáticos Por que que eles não são estáticos porque são métodos responsável por aquele único objeto então o que que eu quero dizer vamos lá se eu tenho usuário a e eu pego usuário a e de 17 first Name e troca o nome do primeiros vagas para João e depois eu tento imprimir usando System. Alto. Print RN é uma variável chamada de primeiro nome que eu vou declarar aqui vou declarar aqui umas trem e chamada de força e nem me recebe usera ponto get first Name vamos imprimir essa instrução aqui que que eu tô fazendo eu tô tocando a propriedade do usuário lá e depois eu tô pegando a propriedade que eu toquei imprimindo então imprimir aqui João certo então beleza eu já fiz os é ter que eu já tô quer propriedade já fiz o get é para eu buscar para o pedágio Então esse método aqui ele pertence a esse objeto Então esse método ele vai alterar o comportamento somente desse objeto aqui dosera se eu quiser trocar o comportamento de um outro objeto eu tenho que ter um outro objeto vivo como usar B O que é o usuário César que eu falei e aí eu vou trocar o usei B pontos at first Name para Fábio e vou tentar imprimir aqui e a propriedade do CRB tem que vai ser o CRB que a força name user b e aqui eu vou imprimir fortinene e o CRB Ah tá então usar a continua funcionando e o CRB também continua funcionando Porque o método é responsável por trocar a propriedade do objeto corrente o objeto vivo agora quando a gente tem uma propriedade estática essa propriedade ela não altera o comportamento do objeto vivo o estádio que simplesmente é como se fosse um método da classe é um método compartilhado vamos dizer assim todos os objetos vou te dar um exemplo vamos criar uma variável aqui ó ó e para ficar mais claro vamos criar uma variável aqui privada inteira chamada decaut de contador tá E aí eu vou fazer o seguinte vou criar um método 7 Public void 7 Counter vamos passar o número inteiro e Vamos guardar na variável do objeto usando disse então este objeto corrente disse esse objeto vivo.
Counter que é a variável poder Cole do objeto recebe o valor que viu do pagamento e depois eu vou fazer um gato é para ele Bangu aqui o retorno é um inteiro Jet Country não tem pagamento Porque o método de retorno eu vou dar um retorno em o valor armazenado do objeto tá E aí que que eu vou fazer aqui eu vou dividir a tela só para você enxergar que o fundamento só para a gente ter as duas visões iguais aqui e é deixa o por aqui aqui que eu vou trocar aqui abrir o usuário dá para deixar do lado esquerdo Então vamos lá eu vou criar os vagos lá vou chamar de Tiago Oxe mais disse aqui de César só para a gente ter os nomes corretos aqui a gente não se perder então vamos lá cheguei dois usuários tá aí eu vou fazer o seguinte eu vou pegar usuário Tiago e for da 17 Counter como um depois eu vou pegar o buzzer César vou dar 17 Counter como um também não como dois ou por dois e aí eu vou imprimir o Tiago. Headcount e vou imprimir o César. Get caught vamos rodar esse código aqui que que ele vai imprimir ele vai imprimir 1 e 2 por quê Porque eu só tô trocando o comportamento deste objeto Ah tá Se eu for fazer uma adição vamos começar esse número aqui com 10 Oi e aí cada vez que eu chamar o 7 Cloud eu vou pegar o valor do Counter recebe o valor atual mas o valor que eu passei Ah tá então vou sempre somar os valores que eu passei então aqui eu vou chamar os sete caught três vezes e aqui o César vou chamar três vezes o dois vamos imprimir para ver o que aparece e aqui apareceu três e que apareceu seis porque porque nos vaga o Tiago toda vez que eu chamo 7 caught e implementa no mesmo no meu computador e aqui no Sesi incremento no meu dois no computador então tipo 2 4 6 e que ficou um dois três certo então beleza a variável count pertence somente ao seu objeto toda vez que eu dou um lado de de toda vez que o incremento é esse valor com mais um pouco mais a propriedade que eu passar eu só tô mudando a propriedade daquele objeto porque a variável count pertence a ele porque ela não é estática eu quando eu coloco essa que como estática coloquei ela como estática tá E aí se eu rodar de novo que que acontece e você vai ver que os números vão ficar diferente ficou tudo 9 por quê que ficou tudo nove porque a variável quando ela se torna estática ela pertence à classe como ela pertence à classe ela pertence ao molde esse valor é compartilhado em todos os objetos então por exemplo aqui ficou 123456789 então tanto usuário Thiago quantos vários César tem o seu computador como numero 9 tá porque eles estão compartilhando essa mesma variável é só variável ela pertence aos dois usuários por quê Porque ela foi declarada como estática então quando a gente tem uma variável estática a gente não precisa de uma Instância viva de um objeto para trocar a sua propriedade eu posso declarar o método dele como estático também Ah tá eu vou declarar essa vela graves tática e automaticamente o diz vai parar de funcionar Opa por quê que eu disse parou de funcionar porque o diz é uma referência ao objeto vivo Então como essa variável pertence à classe e não objeto seja ele qual for eu não tenho mais referência do desiste diz não existe mais então eu simplesmente eu vou incrementar o valor atual do contador com o valor que eu passei aqui vou chamar ele ser para não confundir tá então cê vai incrementar com o valor que tá aqui então agora não preciso mais de um objeto Vivo para chamar esses dois métodos aqui eu posso passar direto a classe e usei tá passando a classe use eu vou concatenar eu vou incrementar esse objeto vamos fazer aqui de novo e vamos tentar imprimir agora e continua 9 certo porque porque esta variável pertence à classe user então todos os objetos que sai do molde o usar ele vai ter essa propriedade fixa única anexada me dê um exemplo onde a gente geralmente pode usar isso por exemplo se a gente abrir a classe MEF que é de matemática do kit do Android a gente pode ter aqui por exemplo a variável pe a variável pe é uma variável estática então pinoca mudo que esse número aqui tá então automaticamente é uma variável estática que já tem o valor compartilhado em todos os objetos tá a mesma coisa vai acontecer aqui com o nosso objeto use Imagine que essa variável seja um contador eu vou chamar de caught ainda mas aqui no Construtor eu vou sempre dar um caught recebe Counter é mais um eu vou chegar o estático aqui tá E aí que que eu vou fazer eu vou instanciar esses dois objetos ó e vou imprimir o caught Oh e vamos ver o que vai aparecer aqui apareceu dois tá se eu estou se ar mais um aqui vou colocar aqui João o e continuar imprimindo tanto aqui teu usuário quanto do César vai imprimir três por quê Porque a variável estática é uma variável compartilhada uma variável que pertence à classe é uma variável da classe tá então como ela na variável da classe todos os objetos que sair dessa classe vão compartilhar a mesma propriedade diferente se eu tivesse não colocado ela como estática sempre me agora você vai ver que o valor vai ser diferente mas ser um porque vai ser um Porque mesmo que eu tenho estanciado usuário João aqui e os vários César automaticamente cada objeto tem o seu computador o único seu no único valor de contador eu quando a gente deixa uma variável estática ou um método estático ela pertence à classe eu por isso que quando eu coloquei aqui um Public static void 7 Cloud passando o contador e o contador aqui e implementa com mais e aqui na hora que a gente dá o 7 eu não preciso pegar o nome do meu objeto e dá um set Out para eu consegui usar ele não precisa fazer isso eu faço direto o nome da classe.