Como sair do ZERO em JAVA em 1h - com @kipperdev

386.41k views12468 WordsCopy TextShare
Rocketseat
Conheça a pós-graduação Tech Developer 360 da Faculdade de Tecnologia Rocketseat: https://rseat.in/F...
Video Transcript:
fala Dev beleza me chamo Fernanda Kiper e no vídeo de hoje a gente vai dar os nossos primeiros passos com a linguagem Java Então vamos dar uma olhada no nosso cronograma pro vídeo de hoje a primeira coisa que a gente vai entender o que é o Java e como ele funciona e depois a gente vai fazer a instalação do Java na nossa máquina e a configuração do nosso ambiente de desenvolvimento e depois disso a gente vai partir para entender a sintaxe básica dessa linguagem e conseguir escrever os nossos primeiros programas utilizando o Java e depois
por fim a gente vai entender conceitos da programação orientada a objetos porque quando a gente fala de Java a gente não pode deixar de falar desse Paradigma e por fim a gente vai compilar e executar o nosso programa bom então vamos partir aqui para entender o primeiro tópico e é o que é o Java bom como vocês já sabem o Java é uma linguagem de programação mas quando a gente fala de Java a gente não pode deixar de mencionar algumas características dessa linguagem a primeira característica é que o Java Segue o paradigma orientado objetos isso
quer dizer dizer que toda a linguagem foi construída em cima dos conceitos e dos princípios da programação orientada a objetos que é uma abordagem da programação onde a organização dos nossos dados se dá no formato de objetos e esses objetos concentram valores e funções então toda a organização do nosso programa fica em volta desses objetos que são como se fossem entidades autônomas dentro do nosso programa e quando a gente fala de Java a gente também tem que mencionar que é uma linguagem fortemente tipada isso significa que o Java controla bastante os tipos né dos programas
então quando a gente tá escrevendo o programa Java a gente precisa declarar o tipo da nossa variável o tipo de retorno de uma função o tipo dos parâmetros que são passados para essa função e vários outros locais onde a gente precisa declarar os tipos e o Java mantém Esse controle muito forte Então se a gente não fizer a declaração dos tipos ele vai acusar os erros para nós e por fim o Java é uma linguagem Independente de plataforma e foi uma das precursoras nessa área Hoje em dia a gente tá muito acostumado a escrever um
programa em JavaScript ou em Python e conseguir rodar ele em qualquer máquina então por exemplo eu escrevo um programa JavaScript aqui no meu Mac eu consigo pegar esse programa e rodar num Windows rodar num Linux sem problema algum mas há um tempo atrás quando a gente falava de linguagens como C por exemplo uma vez que o programa em C fosse compilado eu não conseguia executar esse programa compilado em outra máquina que não tivesse arquitetura né E o hardware compatível com a máquina onde esse programa foi compilado então se eu compilar um programa Ac aqui no
meu Mac que tem o processador M1 eu não ia conseguir rodar esse mesmo programa numa máquina Windows com um processador diferente e o Java foi um dos precursores nessa questão de Independente de plataforma então a gente consegue compilar um programa Java e executar em qualquer máquina então beleza A gente entendeu o que é o Java e agora vamos entender o que é a jvm porque provavelmente se você tá estudando Java você já deve ter escutado essa palavrinha aqui e talvez ainda não tenha entendido onde ela se encaixa a jvm ou Java virtual Machine é um
componente fundamental do Java é ela que permite que o Java seja Independente de plataforma e o que que ela é a jvm é uma máquina virtual que interpreta e executa o código JAVA compilado então quando a gente compila o nosso programa Java a gente não tá compilando pro nosso sistema operacional e pro nosso hardware a gente tá compilando pra jvm e depois quando a gente for executar esse código compilado a jvm que fica responsável por interpretar e fazer a correspondência ali do programa Java pras instruções específicas do sistema operacional e do Hardware onde ela tá
rodando E além disso a jvm também faz o controle né o gerenciamento de um de memória de um programa Java e também faz a coleta de lixo e várias outras features da linguagem então beleza A gente já entendeu o que é a jvm O que é o Java então agora vamos partir pra instalação então para fazer instalação no no Java basta a gente procurar aqui no Google por Java Download Oracle e a gente vai cair nessa página da Oracle aqui onde a gente pode fazer instalação das versões mais recentes do Java eu vou vir aqui
vou escolher a versão 17 que é a que eu tenho hoje na minha máquina e aí eu vou escolher qual o meu sistema operacional se é Linux se é Mac ou se é Windows no meu caso aqui é o Mac depois que eu escolher o sistema operacional eu vou ter que escolher qual é a arquitetura aqui da minha máquina no meu caso é RM 64 e eu vou escolher o dmg installer porque dessa forma eu tenho um helper ali no momento de instalação porque se eu escolher o arquivo aqui com zipado eu vou ter que
descompactar esse arquivo e colocar ele ali nos lugares corretos é uma instalação um pouquinho mais manual Se eu escolher aqui o dmg installer fica um pouquinho mais fácil eu vou clicar aqui vou fazer o download ele vai carregar aqui o download para mim enquanto ele vai fazendo aqui o download eu vou mostrar para vocês se vocês tiverem no Windows por exemplo só tem uma opção de arquitetura que é o x64 E aí vocês vão escolher aqui a opção são de installer que dessa forma vocês vão ter o helper ali na hora de fazer a instalação
como eu falei para vocês e no Linux aqui a gente tem mais opções que nem no Mac aí vocês escolhem aqui qual o compatível né com o sistema operacional de vocês e com a arquitetura né com o hardware pronto com o download finalizado eu vou abrir aqui meus downloads e vou clicar no arquivo que ele baixou para mim assim que eu clicar no Arquivo ele já vai abrir aqui para mim o helper né de instalação eu clico aqui e ele inicia a instalação a gente vai só clicando aqui em continuar e deixa as opções Def
mesmo eu não vou seguir até o final Porque eu já tenho o Java instalado aqui na minha máquina Como Eu mencionei para vocês e pra gente ter certeza que o Java tá instalado corretamente na nossa máquina basta a gente abrir o terminal né depois que vocês terminarem o processo de instalação e colocar aqui no terminal Java menos menos version que assim a gente vai ver a versão do Java que tá instalado aqui na nossa máquina e no meu caso é a versão 17 Como Eu mencionei para vocês então beleza com a instalação do Java concluída
vamos partir pra instalação do nosso ambiente de desenvolvimento e a gente vai usar hoje a ide intelij e a gente vai usar a versão gratuita que é a versão community Então a gente vai abrir aqui a página do intelij e vamos buscar aqui pelo intelij id community Edition que é a versão dessa ide open source tá aberta pra comunidade eles têm a versão paga que aí tem mais features né dentro da da ide mas a gente vai usar aqui a versão gratuita que atende bem o que a gente precisa para hoje e aqui ele já
identifica que eu tô no Mac eu posso fazer o download do arquivo dmg eu vou clicar aqui vou escolher a minha arquitetura se é se é o meu processador Intel se é Apple Silicon vou clicar aqui e ele vai iniciar o download para mim E aí com o download finalizado a gente já pode partir pro nosso intelij para começar entender a sintaxe básica do Java Então vamos vir aqui vamos concluir a instalação do nosso ambiente de desenvolvimento e vamos partir pra sintaxe básica da linguagem então vou abrir aqui meu intelij e aqui na página inicial
do int do intelij a gente vai criar um novo projeto que é o que o projeto que a gente vai fazer no vídeo de hoje aqui eu vou dar um nome pro meu projeto e eu vou chamar de Java introduction né que vai ser introdução ao Java aqui eu posso escolher onde eu quero salvar esse meu projeto eu vou salvar des dentro da minha pasta projects né que é onde eu costumo deixar os meus projetos e aqui vocês vão escolher a pasta onde vocês preferirem e aqui a gente vai escolher qual a linguagem que a
gente vai utilizar e no nosso caso é o Java então intelij também é usado né uma ideia usada para outras linguagens como cotlin Groove e até para arquivos HTML mas o nosso caso aqui vai ser o Java Então a gente vai escolher o build System eu vou deixar aqui como interj e aqui a gente vai poder escolher qual é o jdk que a gente quer usar que é o Java development kit que no caso é o que a gente recé baixou né que a gente acabou de fazer o download e aqui para mim já tá
selecionado ó a versão 17 que é o jdk que eu tenho instalado aqui na minha máquina e aqui vocês vão fazer né a escolha do jdk que vocês instalaram e a gente vai deixar selecionada essa opção add sample code porque dessa forma quando a gente criar aqui um novo projeto ele já vai vir com alguns códigos de exemplo para nós então vou clicar aqui em criar ele vai processar e vai fazer a criação aqui do projeto para nós e se a gente ver ó ele criou aqui a pastinha Java introduction e dentro dessa pastinha ele
colocou a pasta source e dentro de source ele colocou esse arquivo Main e é aqui que a gente vai mexer por enquanto então dentro do arquivo Main Vocês conseguem ver que ele fez a criação da classe Public Main e dentro dessa classe ele colocou esse método aqui Main por que isso porque quando a gente cria um novo arquivo Java a classe principal desse arquivo tem que ter o mesmo nome do arquivo então no caso como o meu arquivo se chama Main a classe principal desse arquivo tem que se chamar M também a gente já vai
entender o que são as classes né Porque que a gente tá fazendo dessa forma mas só para vocês entenderem o nome da classe precisa ser o mesmo nome do arquivo beleza Então vamos vir aqui dentro desse noto sub método Main vamos excluir esse hello world e vamos partir para entender a sintaxe básica do Java e a primeira coisa que a gente vai entender é como fazer a declaração de variáveis Então vamos vir aqui pro nosso intelij e vamos começar a declaração das nossas variáveis então Existem duas maneiras da gente declarar variáveis no Java a primeira
maneira que a gente vai ver é a maneira mais comum como é que a gente faz a gente tem que declarar o tipo da variável então na frente aqui eu coloco o tipo depois eu preciso dar um nome para essa variável e por fim eu preciso atribuir um valor por exemplo eu quero criar uma variável que é do tipo inteiro né um número eu vou colocar aqui int eu vou dar um nome eu vou chamar de idade Então vou atribuir o valor mas eu não preciso fazer essa atribuição aqui do valor na declaração da variável
eu posso Primeiro só declarar a variável por exemplo salário então ao longo do meu programa eu atribuo o valor por exemplo de 400 então consigo fazer só a declaração da variável e posteriormente atribuir um valor para ela e uma coisa a partir do momento que a minha variável aqui tá tipada né ela tem o tipo int eu não posso colocar uma string nessa variável então por exemplo se eu vier aqui e trocar o valor de idade para Fernanda ele vai me acusar um erro eu não posso fazer isso aqui por conta da característica do Java
ser uma linguagem fortemente chpada Como Eu mencionei para vocês então beleza já entendemos como declarar a variável desse formato agora vamos entender a outra forma que Eu mencionei pro vocês essa segunda forma de declarar variável é uma forma que funciona apenas para variáveis de escopo local então partir do momento que a gente usar essa maneira aqui para declarar a variável ela só vai existir dentro do escopo do método onde ela foi declarada aqui no caso é dentro do escopo do método Main então eu vou declarar a variável usando a palavra reservada var e eu tenho
que dar um nome para essa variável também eu vou dar um nome de nome e então eu preciso fazer a atribuição de um valor para ela vou chamar aqui de Fernando Vocês conseguem ver aqui que nesse formato de declaração de variável eu não atribuo um tipo diretamente então aqui eu não não coloquei que é string né Por exemplo eu só coloquei var mas aí eu fiz a atribuição do valor por quê Porque ele vai inferir automaticamente o tipo dessa variável através do valor então ele já sabe que o tipo do nome é uma string por
causa do valor que eu passei aqui uma string ó se a gente colocar o mouse por cima a gente vai ver aqui ó string nome ele já deu um tipo para essa variável e aqui embaixo eu não posso vir e atribuir o nome como um inteiro por exemplo ele também não deixa eu fazer essa mudança aqui por conta de ser uma linguagem fortemente chipado outra coisa interessante desse formato aqui de declarar variável é que eu não posso fazer só a declaração que nem eu fazia da outra forma eu não posso vir aqui só colocar var
idade e aí não atribui um valor ele vai me mostrar um erro por quê Porque ele não tá conseguindo inferir o tipo porque ele infere o tipo através do valor então quando eu tiver usando var para declarar uma variável logo que eu fizer a declaração eu já tenho que fazer a atribuição do valor ele não deixa eu fazer a declaração e depois a atribuição porque ele precisa do valor para inferir o tipo da variável então beleza A gente já entendeu Como fazer a declaração de variáveis no Java agora vamos entender um pouquinho mais sobre os
tipos primitivos da linguagem pra gente saber quais tipos a gente pode utilizar para dar pras nossas variáveis Então vamos voltar aqui pro intelij e vamos entender Quais são esses tipos primitivos dentro do Java existem oito tipos primitivos e quatro desses oito tipos primitivos são usados para inteiros Quais que são eles é o bite o short o int e o long e qual a diferença entre esses caras aqui a única diferença entre eles é a faixa de representação então aqui por exemplo o bytes consegue representar inteiros pequenos que vão da faixa somente de -17 até 128
por quê Porque aqui eu só consigo armazenar um byte que seriam 8 bits né então então é somente a faixa de representação que eu consigo ter com 8 bits já o shorts é um pouquinho maior o int é maior que o short e o long é o maior de todos então vou abrir aqui o Google e vou mostrar para vocês a diferença né da faixa de representação de cada um deles então o byte aqui a gente consegue ver que ele utiliza 8 bits e ele consegue representar da faixa de -18 até 127 o short é
16 bits ele consegue representar de - 32.768 até 32.767 o inteiro 32 bits e vai de 2 milhões não sei o qu até 2 milhões até 2 milhões e tanto e o long que é o maior de todos utiliza 64 bits e vai desse número grandão aqui até esse outro número grandão então se eu tiver declarando um número pequeno como por exemplo 22 Eu poderia usar aqui tanto bite quanto short quanto int quanto long poderia usar qualquer um deles aqui para armazenar o valor 22 O ideal seria usar o byte por exemplo porque dessa forma
eu tô declarando uma variável que precisa de um espaço de armazenamento de somente 8 bits se eu colocasse aqui como um long eu ia est desperdiçando todos os outros bits né porque no long a gente tem aqui 64 bits para armazenar então quando Java tiver rodando aqui esse meu programa jvm ela vai destinar 64 bits para armazenar aqui essa minha variável porque eu disse que ela era do tipo long só que eu vou est armazenando somente o número 22 Então vou estar desperdiçando aí muitos bits que eu não vou est usando PR representação eu poderia
muito bem aqui colocar como bite é bem comum a gente ver nos programas o pessoal usar de forma generalizada o in mas aqui o ideal que seria para desperdiçar menos memória seria usar o bte mas é comum sim usar o bit o pior aqui mesmo seria usar o long porque a gente estaria desperdiçando muitos valores Beleza então a gente já entendeu os tipos bite short int e long agora vamos partir pro tipo boleano Então dentro do Java a gente pode usar o boolean para declarar variáveis né ou retorn de métodos funções que são do tipo
boleano a gente utiliza essa palavrinha reservada aqui o bulen e eu vou chamar aqui de é brasileiro por exemplo e vou colocar como true eu consigo armazenar uma variável do tipo buleiro Beleza depois do boleano a gente tem também o tipo sh o tipo sh é usado para armazenar caracteres Então posso vir aqui e colocar um char uma letra e colocar somente uma letra aqui dentro dentro desse char eu não poderia colocar uma string como por exemplo oi ele vai me dar um erro aqui ó ele vai dizer que o oi tem muito tem muitos
caracteres né E aqui deveria ser somente um caracter se eu quiser armazenar uma string eu vou usar o tipo string só que o string não é um tipo primitivo do Java tá o string não é um tipo primitivo ele é uma classe auxiliar dentro do Java a gente usa bastante para declarar Strings Mas a gente não pode dizer que é um tipo primitivo tá é uma classe é diferente dos outros que a gente estava vendo e por fim ficou faltando dois tipos primitivos que é o Double e o float o Double e o float são
usados para representar números com ponto flutuante e a única diferença entre os dois é também a faixa de representação então com o Double a gente consegue representar número de ponto flutuante com mais precisão a gente consegue armazenar mais números depois da vírgula então sendo um número mais preciso já com float a gente tem uma faixa de representação um pouco menor então é usado para representar número de ponto flutuante simples tá com menos precisão então aqui a gente pode usar por exemplo Double idade e colocar 22,50 dessa forma a gente tá armazenando um double ou poderia
vir aqui colocar float salário e colocar como sendo 400.20 só que aqui a gente precisa colocar colocar um F no final para mostrar que é do tipo float e não do tipo Double se eu deixar sem esse F ele vai me acusar um erro aqui ó e vai dizer que eu provi um valor do tipo Double e eu tava esperando um tipo float então para eu indicar que isso aqui é um float para colocar na faixa de representação do float eu tenho que colocar o Ezinho aqui no final então beleza A gente já entendeu aqui
todos os tipos primitivos agora vamos entender como é que a gente escreve condicionais no Java pra gente escrever condicionais no Java a sintaxe é muito parecida com outro outras linguagens de programação Então a gente vai vir aqui vamos colocar if Vamos Fazer uma comparação bem simples eu vou comparar se esse valor aqui da idade é maior que 22,60 então vou colocar if idade for maior que 22.60 então coloco aqui as chaves e coloco o que que eu quero fazer nada eu vou fazer aqui um print System ponal P print LM maior senão se for menor
eu vou colocar um ELS e vou colocar aqui System p Alt P print LM Menor Mas além do IF else eu também tenho else if então eu posso vir aqui e colocar mais uma condição que é o de elsif então elsif idade for igual a 22,60 eu vou colocar aqui um System p. println igual beleza essa é a sintaxe da gente escrever condicionais no Java bem simples e bem parecido com a sintaxe de outras linguagens agora que a gente já entendeu condicionais vamos entender como é que a gente declara vetores no Java né como é
que a gente declara ar Reis Então vamos voltar aqui pro intelij e vamos limpar aqui o que a gente já fez e vamos entender como é que a gente faz a Declaração dos ar Reis então a sintaxe pra gente declarar uma rei em Java É bem parecido com uma sintaxe pra declaração de variável então o que que a gente precisa fazer a gente precisa passar o tipo dos dados que vão ser armazenados nesse arrei e a gente precisa indicar que vai ser um arrei Então vou colocar tipo vou abrir e fechar colchetes e vou dar
um nome para variar então é bem parecido com o que a gente já tava acostumado então por exemplo eu vou vir aqui vou colocar int vou indicar que é um arrei e vou dar um nome vou chamar de idades Beleza agora como é que eu faço para usar esse arrei bom antes da gente partir pra utilização do arrei idades antes de eu salvar valores ali ou consultar valores eu preciso inicializar esse arrei então eu não posso vir aqui e colocar idade zero recebe 22 Não posso fazer isso por quê porque eu ainda não inicialize o
Array eu ainda não disse Quantos elementos eu vou armazenar nesse Array se vocês verem aqui ó o próprio intelij já tá mostrando para mim ó verbo idades my not Have been initialized então a variável idades ainda não foi inicializada como é que a gente faz para inicializar um arrei bom tem duas formas a gente pode fazer a inicialização direta então aqui onde eu declarei idades eu posso já colocar um arrei e colocar quantos números vão ter aqui então por exemplo 2 3 e 4 E aí dessa forma aqui embaixo já poderia pegar o valor zero
que vai ser esse dois aqui e substituir por quatro por exemplo então nessa forma eu já inicialize o arrei de idades com os valores 2 3 e 4 isso aqui já tá dizendo que o meu arrei idades tem Len 3 tá ele vai ter sempre Len 3 agora ou eu posso fazer de outra forma eu posso vir aqui e colocar New int Array E aí passar somente o tamanho do por exemplo 10 e aí depois eu vou fazendo a atribuição dos valores então então eu posso escolher se eu já quero inicializar o arrei com alguns
valores de ou se eu quero somente inicializar ele vazio mas já dizendo o tamanho e depois eu vou colocando os valores dentro deles Beleza então a gente já entendeu Como utilizar os arrs do Java né que a gente pode fazer com Strings Então posso colocar aqui nomes e fazer New string Array passando 10 vão ter 10 nomes posso fazer com booleanos colocar aqui são brasileiros igual a new bullan ar reay com 10 a gente pode fazer isso aqui para todos os tipos que a gente viu anteriormente a gente pode inicializar uma Array tanto dessa forma
quanto de maneira direta Então em vez de passar aqui o new bullen eu abro Chaves e vou colocando os valores true false true false beleza só que vocês conseguem ver uma coisa aqui a gente fica meio limitado porque o nosso arrei tem tamanho fixo né se Vocês conseguem ver aqui ele não é dinâmico eu não posso nesse são brasileiros aqui depois pegar ele e colocar um quinto valor não posso vir aqui e atribuir porque esse índex não tá no Range desse arrei isso aqui extrapola o arrei porque no momento que eu declarei ele eu disse
que ele tinha três posições ele tinha L três se vocês verem aqui ó o próprio intell já tá me indicando ó Array index is out of bounds tá fora dos limites tá extrapolando o tamanho do arrei então a gente acaba ficando limitado como é que a gente pode fazer a declaração de arris no formato dinâmico no Java né com tamanho dinâmico que vai crescendo e diminuindo ao longo que a gente precisa bom a gente vai então fazer a utilização dos Array lists então a gente já pode colocar aqui um cheque nos vetores e agora vamos
partir para entender como funciona o Array list no Java então o Array list é uma classe que vem de dentro de uma biblioteca padrão do Java que é o Java útil e ela nada mais é que uma estrutura de dados ã para representar uma lista dinâmica tá então arr list é uma classe que ajuda a gente representar uma lista dinâmica como é que a gente faz a utilização de uma arraylist a gente importa ele do Java útil e a gente vai usar o Array list no momento de declarar o tipo então invés de eu fazer
int e colocar o colchetes eu vou usar o Array list só que eu preciso dizer o que que eu vou armazenar dentro desse Array list Porque mesmo sendo uma lista de dinâmica que cresce e diminui dinamicamente eu preciso dizer qual o tipo dos valores que eu tô salvando ali dentro então aqui eu vou abrir essas chavezinha aqui e dentro dessas chavezinha eu vou passar Qual é o tipo que eu tô armazenando nesse Array list e o Tipo no caso vai ser integer então aqui eu vou ter que pegar da classe integer eu não vou poder
colocar um tipo primitivo eu vou ter que passar a classe integer que é nativa da linguagem Java que nem a classe string que a gente viu anteriormente beleza coloquei aqui o TIP tip como é que eu faço agora eu tenho que colocar um nome então vou colocar aqui idades E aí eu preciso inicializar esse arrei como é que eu faço eu vou fazer New Array list e passando aqui por ã e passando aqui por parâmetro um integer beleza dessa forma eu inicialize o arrei vejam aqui que em nenhum momento eu precisei passar Qual o tamanho
desse arrei eu não inicialize com valores mas eu também não passei Qual o tamanho e agora como é que eu adiciono coisas nesse arrei eu faço idades ponto add e eu passo um valor adiciono um novo valor posso adicionar outro e d PED 50 idades PED 30 e posso ir adicionando aqui quantos eu quiser e para remover como é que eu faço eu faço idades ponto remove e eu passo o índex que eu quero remover por exemplo o index zero dessa forma eu removo o 22 por exemplo e como é que eu pego um valor
eu posso fazer idades ponto get e eu passo o índice eu quero pegar o índice um eu passo aqui o índice e eu com ele me retorna O valor que tá armazenado ali então por ser uma classe A gente utiliza esses métodos da classe arrey list né para conseguir manipular esse arrei e pra gente conseguir pegar o tamanho desse arrei como é que eu faço eu faço idades ponto size isso aqui me retorna o tamanho desse arrei ah e uma coisa que eu não tinha mostrado anteriormente como é que eu pego o tamanho de um
arrei nativo do Java então digamos aqui que que eu declarei um int idade Zoom que vai ser um New int e aqui vai ter o tamanho 10 como é que eu pego Len dele é bem parecido com outras linguagens faço idades um ponto Len e ele me retorna aqui o length desse desse arrei e aqui no Array list não eu boto o ponto size Então se vocês vierem aqui colocarem e colocarem idades ponto vocês vão ver aqui todos os métodos auxiliares dessa estrutura de dados que é o Array list Então aqui tem um clear tem
Clone tem contains para saber se contém algum valor ali dentro daquele Array tem aqui o add All também para adicionar uma coleção de dados enfim tem várias vários métodos aqui auxiliares pra gente fazer a manipulação dessa estrutura de dados Então beleza entendido como funcionam os arraylists vamos passar pros Loops e depois pro cas para então começar a entender os conceitos de programação orientada a objetos Então vamos vir aqui e vamos entender agora como funcionam os Loops dentro do Java Então os os Loops que a gente vai olhar aqui são os principais Loops que a gente
costuma utilizar num programa que é o Wi e o for vamos começar com o for como é que a gente faz um for no Java a gente deixa eu excluir aqui que ele declarou para mim eu vou fazer for a primeira coisa que eu preciso passar é a variável que eu vou est observando Então vou criar aqui uma nova var que eu vou chamar de i e vou colocar i como igual a zero então eu vou ter que fazer a comparação né desse meu for então I tem que ser menor do que deixa eu colocar
aqui um um novo inteiro que eu vou chamar de idade e tem que ser menor que idade e a cada iteração eu vou ir somando o i vou incrementando I mais mais e aqui dentro eu vou colocar a ação que eu quero fazer por exemplo System ponal ponto print aln eu vou printar aqui Oi então vou printar Oi 10 vezes essa é a forma da gente declarar o for bem parecido com o jav script por exemplo como é que eu posso fazer o while o while também é bem parecido eu vou colocar aqui while e
for menor que idade e aqui dentro eu vou colocar a ação nesse caso eu tenho que declarar o i então vou ter que vir aqui declarar o i como inteiro começando em zero e a cada Y eu vou fazer I mais mais por exemplo vou ir incrementando o i e aí dessa forma eu vou fazer o meu I ir incrementando até chegar em nove que aí vai ser o último momento que ele vai ser menor que idade porque depois quando ele for igual a 10 ele vai ser igual e aí não vai entrar aqui no
ion então beleza A gente já entendeu os demais Loops eu nem vou mostrar porque são bem parecidos Como por exemplo o do Wi né bem parecido com sintaxes de outra de outras linguagens como o JavaScript e vamos partir aqui pro nosso último ponto que é o cast e o que que é o cast o cast é a gente transformar um valor de um tipo para outro tipo por exemplo eu tenho uma variável que é um inteiro tá que tem o número 22 se eu quiser transformar essa variável para um double basta eu adicionar o zerer
no final e eu vou ter um double por exemplo 22.00 e eu posso fazer o contrário também se eu tenho um um double que é por exemplo 22.50 e eu quero transformar para um int se eu fizer o Casting eu consigo transformar para apenas 22 cortando tudo que tem depois da vírgula então é muito comum em alguns cenários a gente precisar fazer esse Casting e no Java Existem duas formas de fazer o Casting existe o casting implícito e o e o cashing explícito o cashing implícito acontece quando a gente faz a transformação de um tipo
pro outro só que sem declarar que a gente tá fazendo essa transformação a linguagem faz de maneira automática para nós e é quando é fácil transformar esse valor Como por exemplo o caso do int para Double Então vou declarar por exemplo aqui uma variável do tipo int que eu vou chamar de idade um e eu vou colocar como sendo 22 eu posso vir aqui embaixo e colocar uma variável do tipo Double que vai ser idade dois e receber idade um e aqui ele não vai acusar nenhum erro para mim por quê Porque ele já consegue
fazer essa transformação automática ele sabe que se ele colocar 22.00 né se ele colocar o ponto ali no final ele já fez a transformação PR Double é só ele aumentar a faixa de representação que ele já consegue fazer a transformação mas o inverso não é verdadeiro então se eu vier aqui e colocar idade um recebendo idade dois ele vai me indicar um erro eu não posso fazer esse Casting implícito aqui eu não posso colocar um double dentro de um inteiro por quê Porque o Double é maior que o inteiro a faixa de representação dele é
muito maior então tô tentando pegar uma coisa grande um bloco desse tamanho e tentando colocar num bloquinho desse tamanho aí ele me indica um erro mas a gente pode fazer essa transformação se a gente quiser mas aí a gente vai fazer um casting explícito a gente vai explicitar pra linguagem que a gente tá ciente que a gente tá perdendo uma a parte da faixa de representação por quê Porque a gente tá cortando o que tem depois da vírgula a gente tá removendo esses valores a gente tá perdendo representação e como é que a gente faz
o Casting explícito a gente coloca abre parênteses e coloca o valor que a gente quer castear né o tipo que a gente quer castear no meu caso é para in eu já coloco aqui e ele para de me indicar o erro e por exemplo eu posso fazer o mesmo com char Então posso vir aqui colocar um char que é letra e vai ser a letra a e aqui embaixo eu vou declarar uma string que vai ser nome esse meu nome não pode receber essa letra vai dar erro como é que eu faço para transformar essa
letra né que é um caracter em uma string como é que eu faço essa transformação eu vou ter que usar a classe A classe string e usar um método auxiliar que é value of e aqui passar a letra aí sim ele para de me usar um erro ele vai transformar essa letra numa string E se eu quiser transformar uma string em um caracter em um char eu vou ter que fazer fazer assim ó letra recebe nome pon shar at então caracter na posição e passo a posição a posição zero por exemplo que é a primeira
aí sim eu consigo fazer essa conversão Então dependendo dos tipos que a gente tá falando a forma de fazer o Casting vai ser diferente aqui a gente viu como fazer com chars e Strings e como fazer aqui com inch Double por exemplo que vai servir da mesma forma para longs para bikes etc se eu quiser transformar um inteiro numa string como é que eu faço eu vou ter aqui string nome dois recebendo string P valueof E aí eu vou passar o idade um eu vou transformar esse inteiro aqui esse 22 na string 22 eu consigo
fazer isso usando o método auxiliar value off e como é que Eu transformo uma string num inteiro não é sempre que a gente consegue fazer essa conversão porque por exemplo a letra o nome Fernanda eu não consegui quia transformar no inteiro então pode ser que isso me retorne um erro mas se eu tiver string 22 e quiser transformar para o inteiro tem uma forma da gente fazer a gente vai vir aqui e vai colocar por exemplo idade um recebendo integer ppse int E aí a gente vai passar a string vou passar aqui o nome dois
então eu uso a classe integer que era que a gente tinha usado antes lá no arrey list para declarar uma R inteiros também e eu vou usar o método auxiliar parts int para fazer essa transformação e eu consigo transformar essa string em um inteiro sem problemas então beleza já entendemos aqui o último tópico como é que a gente faz o Casting no Java então a gente já passou por todos aqui da sintaxe básica e agora vamos começar a parte de programação orientada a objetos e a primeira coisa que a gente vai niner é o que
são as classes Então as classes elas são um elemento fundamental do nosso programa e elas servem pra gente modelar os nossos objetos e a gente modela eles através de atributos e de comportamentos que a gente declara esses comportamentos através dos métodos então aqui dentro da nossa Classe A gente consegue declarar atributos que pertencem a esse objeto o que que são os atributos de um objeto nada mais são do que variáveis que esse objeto tem então logo aqui abaixo da declaração da classe Main eu consigo fazer a declaração de alguns atributos que vão pertencer eh às
instâncias dessa classe então venho aqui e dou uma e declaro mais nome e dessa forma eu declaro o atributo nome e esse atributo eu posso referenciar em todos os métodos que pertencem à Instância da classe M Então posso vir aqui declarar um novo método que vai ser do tipo void que retorno do tipo void ou seja não retorna nada e o método vai se chamar declara nome e aí esse método eu faço aqui nome recebe Fernanda e depois eu posso aqui embaixo declarar um novo método que retorna uma string que se chama get nome que
vai retornar esse nome aqui então posso fazer return nome e eu retorno esse nome só que tem um ponto aqui como eu falei para vocês esse atributo pertence às instâncias da classe M então quando eu vier aqui nesse método que é um método esttico eu não consigo fazer referência a esse atributo aqui nome por quê Porque quando a gente declara métodos que são do tipo estático esse método pertence à classe e não Às instâncias de objetos tá Então esse método aqui Main vai ser igual para todos os objetos que eu declarar da classe M mesmo
que eu crie 10 objetos da classe Main com nomes diferentes o método Main deles todos vai ser o mesmo entendeu não muda é um é um método estático então se eu ver aqui dentro colocar system.out pon println e passar aqui nome ele vai me indicar um erro ó ele vai dizer que um campo estático que um campo que não é estático não não pode ser referenciado em um contexto estático se eu quiser criar um atributo estático eu posso vir aqui e colocar static string nome dois e aí eu passo esse nome dois aqui pro System
ponal eu consigo fazer essa referência porque o esse método estático consegue enxergar esse cara aqui mas ele não consegue enxergar os atributos que vão pertencer A instâncias tá mas aqui nos outros métodos eu consigo fazer referência a esses atributos estáticos também então eu posso vir aqui e colocar system.out pprint Alene e passar o nome dois e ele já vai me indicar aqui ó que eu tô pegando esse nome dois do contexto estático tá E aqui eu posso fazer também Main pon M chamar a função M diretamente da classe M sem necessariamente ter uma Instância dessa
classe ó tão vendo aqui que eu tô chamando diretamente a classe e chamando o método M eu não precisei declarar uma Instância eu não precisei criar um objeto dessa classe aqui ele tá me indicando um erro só porque isso aqui espera uns argumentos e eu não tô passando Mas se eu declarar aqui um outro método estático que vai ser do tipo void test eu poderia chamar aqui ó o teste e ele funciona sem problemas mas eu não consigo fazer aqui um Main ponto declara nome Ó eu não consigo fazer isso aqui ó ele diz que
não existe ó o Main P declara nome não existe por quê Porque não é um método stack ele é um método que pertence à Instância então só conseguiria fazer isso se eu fizesse aqui declarasse uma variável do tipo Main que vai ser me M E aí fazer um New M E aí sim pegar aqui o me M pon declara nome aí sim eu consigo fazer as referência porque dessa forma eu criei um objeto eu acabei de criar uma Instância dessa classe e fiz a criação de um objeto e aí sim eu consigo fazer a chamada
a esses métodos Inclusive eu consigo pegar o me M pon nome porque isso aqui é um atributo que pertence a este objeto aqui ele tá me dando erro porque eu não tô fazendo nada né não é um não é uma declaração nenhuma aqui mas eu poderia fazer system.out println e printar aqui o nome sem problemas Beleza a gente já entendeu então o que são classes e o que são objetos agora a gente vai entender o que são os construtores e o que são os modificadores de acesso antes da gente partir para uns conceitos um pouco
mais avançados de programação orientada a objetos Então vamos voltar aqui pra nossa classe m e vamos entender o que que é um Construtor Então os construtores são métodos da nossa classe que vão ser chamados para inicializar uma estância dessa classe Como assim eu vou excluir tudo isso aqui que a gente fez pra gente entender o que são os construtores então toda vez que eu criar uma nova Instância da classe M que ou criar um objeto do tipo Main eu quero por exemplo atribuir o nome desse objeto como é que eu posso fazer isso eu posso
fazer através do Construtor e como é que a gente declara um Construtor o Construtor é um método e ele tem que ter o mesmo nome da classe Então posso vir aqui declarar um Public Main e passar e aqui dentro Eu posso fazer a inicialização desse meu objeto como por exemplo atribuir o nome desse objeto como é que eu faço isso eu posso receber aqui por parâmetro o nome que eu quero dar então vou receber pro string Então vou receber por parâmetro uma string que eu vou chamar de nome e aqui dentro do método eu posso
fazer dis pon nome então o meu nome dessa Instância vai ser esse nome aqui que eu recebi por parâmetro então o Construtor é um método que vai ser chamado toda vez que uma Nova Estância dessa classe for criada então quando a gente vier aqui embaixo fazer um New Main e criar uma nova Instância dessa classe quando eu faço isso aqui o método que será chamado vai ser este daqui e eu preciso E aí eu preciso passar por parâmetro tudo que esse Construtor recebe mas um Construtor não necessariamente precisa ser público quando ele é público ele
é visível a todas outras classes então todas as classes que quiserem declarar um objeto do tipo Main elas vão ver esse Construtor aqui elas vão poder Chamar esse Construtor se eu trocar para private somente a classe vai conseguir ver esse Construtor mas a gente já vai entender isso aqui daqui a pouco como funciona quando a gente for falar de modificadores de acesso então a gente precisa entender somente que o Construtor é um método que é chamado toda vez que uma Nova Instância dessa classe é inicializada então por exemplo se eu criar uma nova classe aqui
embaixo que eu vou chamar de pessoa Class pessoa e aqui dentro de pessoa eu criar um método tipo void que é cria m e eu fazer aqui o meu m receber um New M ele vai me dar um erro aqui porque eu tô chamando o Construtor e não tô passando um argumento que ele tá esperando aqui o nome pode ser Fernanda ó ele já me indica aqui o próprio intelij já mostra que o nome do atributo é Fernanda então o Construtor vai ser chamado quando eu inicializar um novo objeto quando inicializar Uma Nova Estância dessa
classe e eu não preciso ter só um Construtor eu posso ter vários construtores então por exemplo eu posso ter um Construtor onde eu recebo só um nome mas Digamos que essa minha classe aqui também tem um int que é idade eu posso declarar outro Construtor aqui embaixo e eu vou receber um nome e idade e e aqui o dis ponto idade recebe idade dessa forma eu permito que quem for criar uma Instância da minha classe possa passar somente alguns parâmetros então às vezes a pessoa ainda não tem a idade para passar para construir o objeto
ela ainda não pediu pro usuário ainda não fez o fet na api Então por enquanto ela só tem o nome e ela quer mesmo assim instanciar a classe eu permito isso através dessa declaração de mais de um Construtor onde eu faço um overload né de assinatura eu crio aqui uma assinatura onde Eu só recebo o nome aqui outra assinatura do Construtor onde eu recebo nome e idade e aqui eu posso decidir eu posso passar só nome ou posso vir e passar idade e aí eu vou est chamando esse Construtor aqui então beleza A gente já
entendeu o que são os construtores vamos lá marcar construtores agora vamos entender o que são os modificadores de acesso Então os modificadores de acesso determinam o nível de visibilidade das nossas classes dos atributos dessas classes e dos métodos dessas classes Então na verdade é uma palavrinha reservada que a gente vai colocar antes da declaração de cada uma dessas coisas antes da declaração de uma classe antes da declaração de um método ou de um atributo que vai determinar esse nível de visibilidade então por exemplo aqui na nossa classe Main que a gente tá usando desde o
início do vídeo ela tá com essa palavrinha aqui Public antes da declaração dela e esse método aqui M também está com essa palavrinha Public isso aqui é um modificador de acesso e o que que ele significa significa que essa classe m está visível para todas as outras classes do meu programa e esse método aqui também então qualquer outra classe do meu programa que criar uma Instância da classe Main fazendo um New M ela vai ter visibilidade desse método aqui também e a gente consegue fazer isso nos atributos Então posso vir aqui declarar um atributo que
vai ser Public do tipo string e eu vou chamar de name esse name aqui esse atributo vai ser visível para todas as outras classes que criaram uma da classe M Então vou aqui embaixo Vou declarar uma nova classe que eu vou chamar da classe pessoa e essa minha classe pessoa vai ter um método de novo que nem a gente tinha feito antes do tipo V que vai ser cria m e aqui eu vou fazer o m me M vou dar um nome né E aqui New M chamar classe M aqui se eu fizer me m
ponto nome name né no caso eu consigo pegar esse atributo porque ele tá público então eu tenho a visibilidade dele eu consigo ver que ele existe só que se eu quiser colocar um atributo ou algum método nessa classe que eu não quero que as outras classes tenham visibilidade que vai ser algo somente pro meu funcionamento interno que somente eu posso alterar ou modificar ou acessar eu vou colocar um modificador de acesso que se chama Private então aqui eu vou declarar um novo atributo Private que vai ser do tipo inteiro e vai ser meu salário salary
né esse atributo salary eu não quero que a classe pessoa consiga modificar então ele tá com tipo Private se eu vier aqui então na classe pessoa e tentar fazer um system.out p println do meu Main psary ele não vai deixar Olha só fica vermelhinho e eu intellij mostra aqui para mim ó salary has Private access em Main então o salary tem acesso privado na classe Main mas a classe M consegue manipular então aqui na classe M se eu fizer um void atualiza salário atualiza salário e colocar aqui this P salary recebe 4000 eu consigo modificar
porque eu tenho acesso eu tenho a visibilidade desse atributo eu posso fazer a mesma coisa com métodos Então esse Meu método aqui eu vou colocar ele como privado Private tá só que aqui embaixo eu vou colocar o método público eu vou chamar que vai retornar um inteiro e vai ser get salary E vai retornar des p salary aqui a minha classe pessoa ela pode chamar esse get salary eu posso fazer assim e eu vou ter acesso porque isso aqui tá como público mas a minha classe M ela não consegue Chamar esse método que atualiza salário
Olha só se eu vier aqui meu m ponto atualiza salário ó nem completa para mim porque eu não tenho essa visibilidade eu não posso fazer isso aqui somente a própria classe m a própria Instância da classe pode fazer isso com ela então aqui dentro do get salary eu posso vir e chamar pon atualiza salário aqui eu posso porque eu tenho essa visibilidade eu tô aqui dentro de mim mesma mas as pessoas de fora não t elas não podem modificar elas não podem chamar então beleza A gente já entendeu Como funciona o Public e como funciona
o Private Mas ainda tem mais um modificador de acesso que é o protected que é esse aqui ó protected a partir do momento que eu troco aqui para protected vocês vão ver que a classe pessoa agora ela vai conseguir ver o salary por quê Porque esse protect daqui vai proteger o atributo ou proteger o método ou proteger a classe somente para classes externas então classes que estiverem no mesmo pacote aqui no caso essa classe pessoa e a classe mão pertencem ao mesmo pacote que pacote é esse é o pacote default do meu projeto Esse pacote
Thor aqui essas classes têm a visibilidade mas classes de fora que pertencerem a outros pacotes não vão ter essa visibilidade então por exemplo aqui a gente tá importando o pacote java.util.list.of essa classe a list lá dentro dela ela pode ter algum método protected que a gente não consegue ver porque a gente não pertence ao mesmo pacote que ela outras classes que tiverem dentro do pacote útil conseguem ver esses métodos atributos protected dela porque pertencem ao mesmo pacote a gente aqui que tá em pacote diferente e tá só importando a gente não tem essa visibilidade a
gente só tem a ilidade do que é público então aqui essa Classe A haist ela é pública ela é que nem a minha classe aqui m por isso que eu consigo enxergar ela e importá-la e Beleza tem mais uma coisa que eu quero mostrar aqui para vocês vocês viram aqui que eu consegui declarar duas classes no no mesmo arquivo né eu declarei a minha classe m e a minha classe pessoa mas se vocês verem uma coisa somente a minha classe m é uma classe pública somente ela eu decorei com Public Se eu tentar colocar Public
aqui na frente de pessoa vai dar um erro por quê Porque eu só posso ter uma classe pública dentro de um arquivo Java e deve ser a classe que tem o nome do arquivo se eu tirar o Public aqui da minha classe Main e deixar o Public só em pessoa vai continuar dando erro porque pessoa o nome dessa classe não é o mesmo nome do arquivo e a gente precisa ter uma classe pública dentro do arquivo com o mesmo nome do arquivo tá é como se é como se fosse o Export default do JavaScript tá
tem que ter um aqui e o default tem que ser a classe que tem o mesmo nome do arquivo tá então aqui eu tenho que colocar um Public e aqui eu tiro o Public E aí eu consigo declarar essa classe e outra coisa Vocês conseguem ver aqui que esse meu método Main ele é Public também e ele tá como estático que lembra que eu falei para vocês que quando ele é estático ele não pertence às instâncias e sim a classe em si e por que que o interj criou isso para nós porque quando a gente
executar esse nosso arquivo aqui esse nosso arquivo Main Java ele vai procurar a classe Public desse arquivo a classe que é exportada def por exemplo que é essa classe Main e vai chamar o método Main estático dessa classe ele vai chamar esse método aqui como para dar o ponto de start do da inicialização da execução quando a gente for Executar a gente vai ver isso acontecer mas é legal a gente já ter isso na cabeça então quando eu for executar quando eu chamar ali o Java no terminal e mandar executar esse arquivo ele vai executar
esse método aqui primeiro ele não vai criar uma Instância da minha classe e vai ficar chamando os métodos da minha classe não ele tem que ter um ponto de entrada e o ponto de entrada do meu projeto da minha aplicação é essa esse método aqui que é o método estático que é o método Main E aí se vocês verem aqui até ele recebe um string que são os argumentos o que que são esses argumentos são argumentos que eu posso passar no terminal então quando eu chamar o Java ali no meu terminal passar o arquivo eu
posso passar alguns argumentos também e esses argumentos vão ser injetados aqui nesse método agora a gente já entendeu o que são os modificadores de acesso Vamos partir paraa herança e polimorfism mesmo para por fim executar e compilar o nosso projeto Então vamos voltar aqui para intelij eu vou limpar tudo que a gente fez Ah não antes só eu quero mostrar uma coisa aqui ó em vez de colocar a classe pessoa aqui dentro da mesma do mesmo arquivo da nossa classe Main eu vou criar uma nova um novo arquivo que vai ser uma Public Class que
vai ser aqui ó um New Java Class e eu vou chamar de pessoa e aqui ele já vem ó como Public vou copiar vou colar aqui dentro se vocês verem que o nome pessoa tá dando um erro por que que ele tá dando um erro porque eu tenho a mesma classe pessoa declarada duas vezes no mesmo pacote então lembra que eu falei para vocês que aqui é tudo o mesmo pacote eu tô declarando a classe pessoa duas vezes ó aqui e aqui eu só tenho que ter uma declaração eu não posso ter declaração duplicada então
eu tenho que excluir aqui e deixar somente essa classe pessoa e mesmo assim ó mesmo estando em outro arquivo eu continuo tendo a visibilidade do da classe m ó eu continuo tendo a visibilidade dela e eu continuo conseguindo né pegar o salary e pegar o name caso eu mude aqui o salary para private de novo né que é privado que aí vai ser só pra classe aí eu não consigo mais visualizar enquanto ele for protected ou Public eu continuo visualizando cons consigo ver que ele existe porque a gente pertence ao mesmo pacote Então beleza agora
sim vamos partir para entender o que é herança e polimorfismo então quando a gente fala de herança já vem a nossa cabeça herdar algo de alguém né a gente pegar algo que era de alguém e trazer para nós a gente herdou isso e pras classes é a mesma coisa uma classe pode herdar da outra e quando a gente fala que uma classe herda da outra quer dizer que ela vai ter todos os atributos e todos os métodos que não são privados dessa classe que ela herdou Então a gente tem a super classe que a gente
chama e a subclasse a subclasse herda da superclasse tá e e ela vai herdar ela vai ter todos os métodos e atributos daquela classe os métodos e atributos que não são privados inclusive ela pode adicionar mais métodos e atributos Então vamos ver como é que isso funciona aqui aqui no meu arquivo pessoa eu vou criar uma outra classe que eu vou chamar de ser tá vai ser um ser eu vou chamar de ser esse esse ser aqui ele vai ter uma string que é um nome to ser tem um nome e um int que é
uma idade tá E aqui ele vai ter um método também que é que é void set nome que aqui vai receber um string nome e aqui dis P nome recebe nome e vai ter também dis pon nome recebe nome e vai ter também um set idade onde eu vou setar a idade desse ser set idade e aqui idade dis pon idade recebe idade Beleza agora e aqui não é uma string é um inteiro beleza é um inteiro Beleza agora eu quero que essa classe pessoa erde todas essas coisas aqui porque uma uma pessoa é um
ser tá a pessoa é um ser mas não necessariamente todo ser é uma pessoa começou a entender Qual é a relação então outro exemplo eu tenho meus meios de transporte tá em meios de transporte eu posso ter carro eu posso ter barco eu posso ter bicicleta eu posso ter avião todos eles H fazem transporte tá todos eles transportam transportam alguma coisa mas eles transportam de maneira diferente um transporta no mar outro transporta voando outro transporta na bicicleta outro transporta no carro então eu poderia ter uma classe uma super classe que eu chamo de transporte E
aí as subclasses erdam dessa classe vou ter o carro eu eu vou ter o caminhão eu vou ter a bicicleta eu vou ter o avião e a mesma coisa aqui pro nosso exemplo de ser eu tenho os seres Como por exemplo o gatinho o cachorro o papagaio o a baleia todos eles são seres diferentes eles todos eles comem todos eles enxergam só que eles enxergam de maneira diferente Eles comem de maneira diferente então consegue ver que eles têm essa relação em comum mas eles também tem cada um deles as suas características específicas então normalmente é
para isso que é utilizado a herança tá eu falei falei expliquei mas como é que a gente faz essa herança é super simples a gente vai vir aqui na classe pessoa eu vou colocar para ela um extends e aqui eu vou passar o ser a partir desse momento a pessoa estende o ser então ela é um ser também e aqui se eu vir e fizer ó dis pto idade ó eu consigo ver que eu tenho a minha idade eu tenho idade aqui mesmo que eu não tenha declarado aqui dentro de pessoa por quê Porque eu
herdei aqui do ser então eu tenho também e olha só que coisa interessante aqui dentro da classe M aqui no método M mesmo eu vou criar um novo ser eu vou chamar de ser e vai ser meu ser animal Olha só meu ser animal e aqui eu posso fazer um New ser né posso fazer um New ser beleza ele não indicou nenhum erro mas eu posso vir aqui também e fazer um New pessoa e não D nenhum erro por quê Porque a pessoa é um ser tá então toda subclasse é do tipo da superclasse então
a superclasse é a que é que é herdada tá é o ser aqui é o super e eu tenho as subs que são as que são tipos dessa superclasse aqui como por exemplo a pessoa então a pessoa ela sempre pode ser usada no lugar de ser porque ela é desse tipo também mas o contrário o inverso não é verdadeiro então não posso vir aqui e colocar pessoa minha pessoa e fazer um New ser isso aqui não dá certo mas eu posso vir aqui e fazer um New pessoa aí ele para de dar erro por quê
Porque o ser não é do tipo pessoa e sim a pessoa que é do tipo ser E aí aqui eu consigo fazer por exemplo a minha meu ser animal que é uma pessoa passar o set nome para ela como Fernanda eu consigo chamar esses métodos aqui na classe pessoa só que eu tava só que foram declarados aqui dentro da classe ser e outra coisa bem legal Aqui também que a gente precisa entender é que eu posso chamar o Construtor da minha superclasse dentro da subclasse então por exemplo eu vou declarar um Construtor aqui paraa minha
classe pessoa como é que eu vou fazer isso vai ser do tipo público vai ser pessoa e aqui eu vou receber uma string nome e um int idade só que aqui em vez de eu fazer dis ponto idade recebe 2 des ponto nome recebe Fernanda por exemplo em vez de precisar fazer isso eu poderia simplesmente fazer aqui super passar o nome e passar a idade e a agora aqui na minha superclasse eu também vou declarar o Construtor do público ser e aqui vai ser do mesmo vai receber os mesmos parâmetros e aqui eu faço dis
P idade recebe idade e dis P nome recebe nome e aqui no construtor da pessoa eu posso fazer as coisas que são específicas só para essa pessoa como por exemplo uma coisa que é específica para pessoa é o sobrenome só uma pessoa tem sobrenome então aqui eu vou colocar um novo atributo que vai ser sobrenome e aqui eu posso receber o sobrenome ó string sobrenome e aqui eu chamo o método construtor da minha superclasse mas eu também vou fazer a minha própria construção então dis pon sobrenome recebe professor sobrenome e agora lá na classe Main
eu passo tudo ó eu vou passar aqui quando eu fizer um New pessoa eu vou passar o nome que é Fernanda eu vou passar a idade e eu vou passar o sobrenome e é aqui eu fiz a construção do meu objeto pessoa né que é um objeto que erda de ser e aqui eu consegui inclusive chamar o método construtor da classe ser que é a minha super classe Então beleza agora a gente já entendeu O que é herança vamos aqui colocar um cheque Zinho e vamos entender por fim o conceito de polimorfismo o polimorfismo é
um comportamento que tá bem ligado com a herança então o polimorfismo diz respeito à habilidade de objetos de diferentes classes responderem a mesma mensagem de maneira diferente como assim o polimorfismo vem literalmente de polimorfo né diferentes formas então a gente pode ter vários seres que erdam da classe ser né todos eles são seres só que eles têm por exemplo o método comer que nem eu falei para vocês cada um come de uma maneira diferente então todos t o método come Mas a forma de comer é diferente isso é o polimorfismo então pra gente entender melhor
eu vou criar uma nova classe então aqui dentro de source eu vou fazer um New Java Class que eu vou chamar de gatinho não cachorro cachorro. jaava beleza e eu vou criar outra classe aqui Java Class vai ser o meu ser esse meu ser deixa eu pegar lá dentro de pessoa vou copiar lá pra nossa classe ser só pra gente deixar organizado então aqui eu vou deixar só a pessoa o ser eu vou deixar aqui tem que ser um Public pras outras poderem ter a visibilidade desse cara então beleza aqui Continua sem problema e o
meu cachorro também vai estender de ser extends ser e aqui vocês já conseguem ver que ele tá me indicando um erro por quê Porque eu não tô chamando o Construtor da classe ser e essa classe ser tem um Construtor que recebe parâmetros Isso aqui precisa ser chamado então Obrigatoriamente aqui dentro das da subclasse eu tenho que chamar esse Construtor e aqui eu posso colocar um Create constructor e ele já cria para mim o Construtor cachorro chamando o Construtor da superclasse né passando nome e idade o meu cachorro em vez de um sobrenome ele vai ter
um dono então aqui vai ter o nome do dono né nome dono por exemplo vai ser uma string aqui eu vou receber uma string que é o nome do meu dono então nome dono eu faço dis ponto nome dono recebe nome dono o cachorro ele vai ter uma forma de dar uma saudação então aqui na minha classe ser os seres eles dão saudações então eles conseguem cimentar outros seres da sua espécie então aqui dentro da minha classe ser eu vou declarar um novo método que que vai ser um método público que vai ser do tipo
string vai retornar uma string e vai ser saudação saudação e aqui eu não vou fazer nada só vou retornar um no e agora lá dentro da minha classe cachorro eu vou fazer um override dessa classe aqui saudação eu vou sobrescrever ela e vou declarar aqui pro cachorro né para como seria pro cachorro então vou fazer aqui um override e eu vou fazer um Public string saudação e aqui o meu cachorro o que que ele faz ele retorna um au au meu cachorro Ele não retorna O nome nada a saudação do cachorro é au au mas
já lá na nossa classe pessoa a saudação vai ser diferente então vou vir aqui em pessoa eu vou ter a saudação e aqui eu vou retornar Olá meu nome é e aqui eu vou passar o dis pon nome Beleza agora a gente já tá vendo aqui que que dois objetos Diferentes né que tem o mesmo método se comportam de maneiras diferentes a pessoa dá saudação falando Olá meu nome é e o cachorro Fala auau Agora vai ficar mais interessante eu vou vir aqui na classe man por exemplo e na minha classe M aqui eu declarei
um ser né um tipo ser que eu chamei de meu ser animal agora eu posso vir aqui nesse meu meu ser animal e chamar saudação e aqui não me importa como é que esse esse ser aqui tá implementando saudação então poderia muito bem trocar aqui por o new pessoa por New cachorro e tudo continua funcionando tá são objetos diferentes de classes diferentes mas que respondem à mesma mensagem que mensagem essa é a chamada ao método saudação então aqui o cachorro vai fazer oau e a pessoa vai fazer Olá meu nome é então isso é um
polimorfismo entendeu eles erdam da mesma classe né então os dois são seres só que se comportam de maneiras diferentes o comportamento desses objetos é diferente cada um dá sua saudação diferente cada um come de maneira diferente e é que Inclusive a gente fez isso através do override a gente sobre escreveu o método da superclasse Fazendo a implementação correta para cada um deles então que agora a gente já entendeu o que é polimorfismo a gente terminou todos os conceitos que a gente tinha separado para pro vídeo de hoje de programação orientada a objetos a gente já
pode partir pra compilação e a execução do nosso programa para finalizar o vídeo então vou abrir aqui de novo meu intelij com o programinha que a gente esta fazendo e eu vou abrir o meu terminal então eu vou vir aqui embaixo ó clicar em terminal e ele vai abrir o terminal para mim eu vou entrar dentro da pasta source então vou fazer CD source e a gente vai compilar o nosso programa Então como é que eu vou fazer eu vou usar o comando Java C que é literalmente de Java compiler né compilador e vou passar
o nome do arquivo que eu quero compilar que m. jaava Quando eu fizer isso ele já vai compilar esse m. jaava e vai compilar também todos os outros arquivos que essa classe aqui né que esse arquivo depende que seria por exemplo o pessoa o ser então vou vir aqui javac m. Java vou executar e ele vai compilar para mim e se a gente ver aqui ó ele gerou o mainclass o cachorro pon Class e o ser pon Class Por que que ele não gerou o pessoa pon Class porque em nenhum momento aqui eu tô usando
do pessoa né na verdade eu troquei o uso do pessoa pro cachorro mas se eu ver aqui e colocar embaixo do ser animal o meu ser humano meu ser humano colocar aqui Fernanda trocar o dono do cachorro para Fernanda né o nome do meu cachorro vai ser Willy o nome do cachorro vai ser Willy o dono é Fernanda e a idade do cachorro vai ser cinco e aqui o dono é Fernanda se eu deixar aqui e trocar para pessoa Claro pronto e aqui eu vou chamar o meu ser humano e aqui eu vou chamar o
meu ser humano ponto saudação agora se eu deixar aqui essa pessoa né ele vai fazer vai gerar o pessoa pon Class também então vou executar de novo o javac m. Java vamos esperar e ó ele já gerou o pessoa pon Beleza então conseguimos compilar como é que a gente faz para executar o nosso programa agora a gente vai usar somente o comando Java então vou fazer Java e vou chamar Main que é o nome aqui do arquivo que eu quero executar Esse é o ponto de entrada da minha aplicação lembra que eu falei para vocês
e o que que ele vai executar quando eu chamar ele vai executar esse método aqui então vou clicar beleza ele executou ah F mas ele não mostrou nada Sim a gente não mostrou nada aqui ó eu só criei o meu animal criei o meu humano mas eu não fiz nada eu eu setei o nome chamei a saudação Mas eu não fiz nada eu não printei não fiz nada a saudação só retorna uma string Então como é que a gente pode fazer para visualizar isso vou fazer o System Pout pon print Aliene Vou colocar aqui em
volta e vou printar vou printar a saudação do meu ser animal e do meu ser humano e aqui eu vou tirar essa linha de baixo vamos compilar novamente então javac m. Java ele vai gerar os arquivos Class de novo e eu chamo só Java M Agora sim ó a au e Olá meu nome é Fernanda e aqui eu posso por exemplo também PR print aln do name não vai dar certo por qu porque aqui eu tô no método estático e esse atributo aqui não é o atributo estático Mas eu posso vir aqui declarar um atributo
estático né aqui static nome do vídeo começando do zero em Java e aqui é uma string eu posso vir agora aqui nesse nosso atributo estático e printar o nome do vídeo vou compilar de novo vamos executar ó começando do zero em Java Então beleza já podemos vir aqui e colocar um cheque a gente já sabe compilar o nosso programa e executar o nosso programa mas antes da gente terminar essa sessão de compilação e execução Vocês conseguem ver que aqui no intelij aqui no canto direito ele mostra para nós ó um botãozinho de Run e um
botãozinho de de Build a gente pode usar esses shortcuts aqui do intelij para compilar e executar o nosso programa para não precisar ficar rodando aqui no terminal o tempo todo então vou fechar aqui o nosso terminal e vou usar esse botão aqui para executar ó se eu clicar ele vai começar fazendo um build quando ele terminar de fazer o build ele já executa para mim ó e o resultado continua o mesmo então eu não preciso fazer pelo terminal se eu não quiser eu posso usar aqui os próprios botões da ide que já me facilitam me
ajudam bastante então Agora sim a gente finalizou o nosso vídeo de hoje então se você gostou do vídeo de hoje quer se especializar ainda mais em Java a Rocket está lançando a nova trilha de Java onde além de aprender os fundamentos da linguagem você também vai aprender sobre o Framework Spring boot que é um dos frameworks mais utilizados na comunidade Java e utilizado por grandes empresas Além disso também você vai aprender sobre conceitos de api rest utilizando Java como fazer o Deploy da sua aplicação como implementar autenticação e autorização como fazer testes unitários como fazer
a documentação certinha da sua api em Java como fazer o monitoramento da sua api e muito mais é uma trilha super completa para você sair do zero e se tornar um especialista em Java e conquistar sua primeira vaga com o desenvolvedor Java bom galera para Esse vídeo foi isso eu vou ficando por aqui espero que vocês tenham gostado e até o próximo [Música] vídeo Y
Related Videos
Curso de PROGRAMAÇÃO JAVA para INICIANTES | Tudo que você precisa para aprender Java
1:49:22
Curso de PROGRAMAÇÃO JAVA para INICIANTES ...
Fernanda Kipper | Dev
94,723 views
TUDO que você deve estudar de JavaScript antes do React
1:25:24
TUDO que você deve estudar de JavaScript a...
Rocketseat
316,746 views
How to Start Coding | Programming for Beginners | Learn Coding | Intellipaat
33:08
How to Start Coding | Programming for Begi...
Intellipaat
9,530,413 views
Não aprenda Java antes de ver este vídeo!
12:57
Não aprenda Java antes de ver este vídeo!
Victor Lima - Ciência da Computação
15,885 views
Toram Piano & Lofi... for Sleep/Study/Relax
Toram Piano & Lofi... for Sleep/Study/Relax
H2O Music Channel
Aprenda Javascript em 1 video (+ projeto prático)
2:14:56
Aprenda Javascript em 1 video (+ projeto p...
Bonieky Lacerda
68,326 views
How to Start from ZERO in Node.js in Just ONE Lesson
1:31:36
How to Start from ZERO in Node.js in Just ...
Rocketseat
198,482 views
OO e List em Java - Aulão #003
59:10
OO e List em Java - Aulão #003
DevSuperior
71,888 views
Como aprender programação de forma INTELIGENTE, sem perder tempo com coisas INÚTEIS
18:05
Como aprender programação de forma INTELIG...
Rafaella Ballerini
169,606 views
Estrutura de pastas p/ Next.js (rotas privadas e públicas)
21:16
Estrutura de pastas p/ Next.js (rotas priv...
Rocketseat
22,923 views
CURSO DE SPRING para INICIANTES | Tutorial Completo de Java Spring
51:25
CURSO DE SPRING para INICIANTES | Tutorial...
Fernanda Kipper | Dev
75,912 views
CHEGOU A HORA DE FALAR DE JAVA!
28:34
CHEGOU A HORA DE FALAR DE JAVA!
Código Fonte TV
146,391 views
Se Você Passar Por Esses 5 Desafios, Você Aprendeu React JS
17:23
Se Você Passar Por Esses 5 Desafios, Você ...
Filipe Deschamps
335,283 views
How To Learn Any Skill So Fast It Feels Illegal
13:48
How To Learn Any Skill So Fast It Feels Il...
Justin Sung
1,174,999 views
PROGRAMADOR INICIANTE | FOQUE SOMENTE NISSO
23:28
PROGRAMADOR INICIANTE | FOQUE SOMENTE NISSO
Área Tech Brasil
113,571 views
Curso Lógica de Programação Completo 2024 [Iniciantes] + Desafios + Muita prática
3:02:06
Curso Lógica de Programação Completo 2024 ...
Dev Aprender | Jhonatan de Souza
3,111,141 views
Java para Iniciantes: Um Guia Fácil e Prático + Materiais de Estudo
19:06
Java para Iniciantes: Um Guia Fácil e Prát...
Attekita Dev
9,048 views
Aula de Programação Orientada a Objetos em Kotlin do básico ao avançado
1:42:55
Aula de Programação Orientada a Objetos em...
Lucas Montano
89,845 views
Entendendo Back-End para Iniciantes em Programação (Parte 1) | Série "Começando aos 40"
47:16
Entendendo Back-End para Iniciantes em Pro...
Fabio Akita
411,778 views
CURSO COMPLETO: lógica de programação com Java, aprenda a programar do ZERO  !  #codenewbie
54:41
CURSO COMPLETO: lógica de programação com ...
Kamila code
3,994 views
Copyright © 2025. Made with ♥ in London by YTScribe.com