Escolar Documentos
Profissional Documentos
Cultura Documentos
Artigo
Programação orientada a
objetos com Java
Java é uma linguagem orientada a objetos. Neste artigo, entenderemos o
que isso significa, o que são objetos e por que isso é tão importante para a
linguagem Java.
Artigos
Java
Programas grandes são difíceis de manter – por isso, é um bom hábito separá-los
em unidades mais ou menos isoladas. Em Java, isso é feito utilizando
32 objetos,
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 1/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
que são compostos por atributos e métodos definidos a partir de classes, que
por sua vez são organizadas em pacotes. Esses conceitos são tão centrais em Java
que não se pode programar na linguagem sem utilizá-los.
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 2/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Objetos e classes
muitas vezes.
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 3/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Java e Eclipse
Agora que já sabemos um pouco sobre como se programa em Java, vejamos o que
é Java.
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 5/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Para chegar a essa tela da Figura 1, abra o Eclipse. Primeiro, ele perguntará que
workspace você quererá usar, como pode ser visto na Figura 2. Workspace é o
diretório onde se cria e trabalha em projetos. Se você não tem nenhuma razão
para mudar o padrão, apenas clique em Ok. Feito isso, aparecerá a tela da Figura
3. Esta tela aparece todas as vezes que se abre um workspace novo; para ir ao
ambiente de trabalho, clique no ícone do canto superior direito, com o rótulo
Workbench.
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 6/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
É possível usar vários workspaces com uma mesma instalação do Eclipse. Muitos
um. Por exemplo, se o desenvolvedor trabalha como freelancer para várias empresas, pode
ter um projeto para cada uma; se o desenvolvedor também é estudante, pode manter um
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 7/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Nela, selecione a opção Java Project e clique em Next. Na tela que pode ser vista
na Figura 5, podemos configurar vários detalhes do projeto. Por ora, vamos
apenas dar um nome para o projeto. Poderíamos clicar em Next e mudar outras
configurações, mas não precisamos disso agora, então clique apenas em Finish. O
projeto aparecerá no compartimento do lado esquerdo, na aba Project Explorer.
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 8/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 9/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Pacotes são agrupamentos que podem conter classes e outros pacotes. Cada um é
um diretório, e os arquivos de código-fonte das classes – assim como os arquivos
compilados – que pertencem a um pacote devem vir dentro do diretório
correspondente. Em artigoinicial.primeironome, por exemplo, há dois pacotes:
um chamado artigoinicial e outro chamado primeironome, que está dentro do
primeiro. Os pacotes são importantes para organizar o código, pois programas
podem ter literalmente milhares de classes.
Pacotes também evitam conflitos. É possível usar classes produzidas por outras
pessoas e organizações, e alguns nomes são bem comuns, como File, User, List
etc. Em Java, toda classe é compilada para um arquivo que tem o mesmo nome – e
não seria possível ter dois arquivos com o mesmo nome no mesmo diretório.
Porém, se ponho minha classe File no pacote
br.com.minhaempresa.nomedoprojeto e você puser a sua em br.org.suaong.projeto , é
possível usar ambas as classes em um mesmo programa.
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 10/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 11/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Esse código define uma classe vazia. Na primeira linha, o pacote da classe é
declarado. A palavra public significa que a classe é pública, quaisquer outras
classes podem usar serviços que ela proveja. Já a palavra class define que o que
será declarado agora é uma classe; o nome da classe, PrimeiraClasse , deve vir
logo após a palavra class. As chaves que se seguem ({ }) definem o corpo da classe:
é entre elas que os atributos e métodos devem ser descritos. Por fim, é visível na
Figura 7 que o nome do arquivo em que o código-fonte está é
PrimeiraClasse.java . Em Java, é obrigatório que o arquivo tenha o nome da
classe principal que ele contém seguido da extensão .java. Felizmente, todos esses
detalhes já foram resolvidos pelo Eclipse.
Método main()
Todo programa em Java precisa de uma classe que crie os primeiros objetos e lhes
passe as tarefas iniciais. Quem faz isso é um método especial, chamado main() .A
forma desse método é a seguinte:
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 12/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
A palavra public, aqui, significa que qualquer outra classe pode utilizar esse
método. main é o nome do método, e antes do nome deve vir o tipo do valor que
ele retornará; como o método main não retorna nada, diz-se que ele retorna void.
Já a palavra static tem um sentido bem especial: significa que o método pode ser
invocado mesmo sem ser criado nenhum objeto da classe. Na maioria das vezes,
os métodos de uma classe só podem ser chamados por seus objetos, mas um
método static escapa dessa restrição.
Note que o programa é iniciado por um método chamado main() , não por uma função,
Após o nome do método deve vir a lista de parâmetros. main() recebe apenas um
parâmetro: um vetor (também chamado array) de objetos da classe String , que
representa sequências de caracteres. A declaração do parâmetro é o seu tipo
seguido do seu nome (no caso, foi chamado de args, mas poderia ser qualquer
identificador não reservado). Note que há um par de colchetes ([]) logo à frente da
palavra String ; os colchetes significam que o parâmetro args não é uma String ,
mas sim um array de String . Por ora, esse parâmetro pode ser ignorado.
Em C e C++, declara-se que uma variável é um vetor colocando o par de colchetes após o
nome da variável, como em char array[] . É possível fazer isso também em Java, mas
geralmente é recomendado colocar o par de colchetes após o tipo, pois isso deixaria claro que
O parâmetro que o método main() recebe é um array com todos os argumentos que foram
passados, pela linha de comando, para o programa Java, de modo semelhante aos parâmetros
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 13/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Olá, mundo!
Agora que já foi visto como criar uma classe e declarar o método main() , pode-se
adicionar o método à classe já criada. Vejamos, por exemplo, como criar o tão
famoso “Hello, World”. Para isto, basta acrescentar, dentro do método main() a
seguinte linha:
1 System.out.println("Olá, mundo!");
A classe resultante pode ser vista na Listagem 1. Para executá-la, basta clicar no
botão Run do Eclipse ( ). Aparecerá uma aba na parte inferior da janela,
chamada Console, e nela haverá uma parte em branco em que estará escrito “Olá,
Mundo!”, como pode ser visto na Figura 8.
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 14/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Para começar, o texto “Olá, Mundo!” foi representado por uma instância de
String . (“Instância de X” é sinônimo de “objeto da classe X”.) Este objeto String
A expressão "Olá, Mundo!" não representa na verdade um objeto da classe String , mas um
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 15/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Encontre aqui os Guias de estudo que vão ajudar você a aprofundar seu conhecimento na
Aprender Java não é uma tarefa simples, mas seguindo a ordem proposta nesse Guia, você evitará
muitas confusões e perdas de tempo no seu aprendizado. Vem aprender java de verdade, vem!
Torne-se um programador Java completo. Aqui você encontra cursos sobre as mais ferramentas e
frameworks do universo Java. Aprenda a desenvolver sites e web services com JSF, Jersey,
Hibernate e mais.
No código acima, uma classe chamada Pessoa é definida com três atributos para
apontar para os três trechos do nome. Essa classe é um modelo, uma “fôrma” para
32
criar objetos, e cada objeto vai ter seus próprios atributos. Vamos examinar uma
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 16/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Se você quiser testar esses códigos você mesmo, sugerimos que crie um novo projeto e nele
crie as novas classes, como foi explicado anteriormente. Isto é, inclusive, um bom exercício!
Experimente!
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 17/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Um objeto desta classe não deve apenas “armazenar” dados, mas também
processá-los: além dos “ingredientes”, tem de ter também as “receitas”. No caso, o
processamento deve ser feito por métodos. Um método necessário é aquele que
retorne o nome inteiro a partir dos nomes armazenados no objeto. Esse método
poderia ser assim:
variável local. primeiroNome existirá desde a criação do objeto até sua retirada da
memória, mas nomeCompleto só existirá enquanto o método getNomeCompleto()
estiver sendo executado, e para cada chamada do método uma nova variável será
criada. 32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 18/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Como todo programa em Java precisa de uma classe com o método main() ,
criamos uma nova classe, denominada ProgramaNome , que tenha esse método:
Até agora, não vimos como criar objetos. Para isso, Java provê uma ferramenta
especial chamada construtor, que são definidos de forma semelhante a métodos
(embora não sejam métodos). Nós não definimos nenhum construtor em Pessoa ,
mas isso não é necessário para criar objetos: toda classe sem construtor definido
tem, por padrão, um construtor simples. Os construtores têm o mesmo nome de
suas classes e são invocados pelo comando new. A linha abaixo chama o
construtor padrão de Pessoa ; esse construtor cria um novo objeto, e o objeto é
armazenado na variável pessoa :
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 19/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Em Java, não é possível dar o mesmo nome a uma classe e a um objeto, mas
podemos criar uma classe chamada Pessoa e uma variável chamada pessoa
Para criar uma pessoa que se chamasse, por exemplo, João Paulo Silva,
poderíamos tentar criar a seguinte classe:
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 20/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Agora, podemos trocar as quatro primeiras linhas do método main() inválido por
apenas a seguinte:
Listagem 2.Classe Pessoa , que gera o nome completo a partir das partes.
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 21/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Listagem 3. Classe ProgramaNome , que utiliza a classe Pessoa para gerar um nome
completo a partir das partes.
Herança
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 22/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Em Java, os tipos dos objetos são classes. Entretanto, ao contrário dos tipos
primitivos, que não são classes (veja o quadro “Tipos primitivos”), um objeto pode
ter vários tipos – desde que esses tipos estejam hierarquicamente relacionados.
Esses relacionamentos são como taxonomias biológicas. Por exemplo, todo
mamífero é um animal, e todo cachorro é mamífero. Há uma hierarquia entre
esses conceitos, que vai do mais geral (animal) ao mais específico (cachorro).
Por exemplo, poderíamos ter uma classe Animal que representasse animais em
geral e as atividades que todos eles executam. Uma dessas atividades é comer, e
nossa classe poderia ser como a abaixo. (Se for testá-la, crie um novo projeto e
chame-o de “Animais”.)
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 23/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
uma das vantagens da herança: como a classe Mamifero estende a classe Animal ,
ela herda todos os métodos de Animal , então não é preciso reescrevê-los. O
programa da Listagem 5 representa bem isso: note como o método comer() é
invocado, mesmo sem ser declarado em Mamifero. Esse programa imprimirá:
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 24/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Tipos primitivos
Quase todos os tipos de Java são classes, e quase todos os valores são objetos,
incluindo strings e vetores. Entretanto, alguns tipos em Java não são classes, e
seus valores não são objetos Esses tipos são chamados tipos primitivos e
representam, basicamente, valores numéricos. A Tabela Q1 os lista.
Tipo Descrição
int Representa números inteiros, de -2147483648 a 2147483647
byte Representa números inteiros, de -128 a 127
short Representa números inteiros, de -32768 a 32767
long Representa números inteiros, de -9223372036854775808 a 9223372036854775807
Valores numéricos que vão de 0 a 0xFFFF. Entretanto, não são usados em
char operações matemáticas; representam caracteres, de acordo com o encoding
UTF-16.
Números com frações usando representação de ponto flutuante. Vai de valores
float tão pequenos quanto 1,4 ∙ 10-45 até 3,4 ∙ 1038. Representa uma grande faixa de
números, mas perde em eficiência comparado com tipos inteiros.
double Números com frações usando representação de ponto flutuante. Abrange uma
32
faixa ainda maior que a do tipo float (de 4,9 ∙ 10-324 até 1,7 ∙ 10308), com
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 25/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
precisão ainda maior, mas são ainda mais lentos e ocupam mais memória.
Para completar este artigo, veja o vídeo que ensina mais alguns recursos
importantes do Java ao darmos os primeiros passos com a linguagem.
Conclusão
Saiu na DevMedia!
Veremos neste artigo como é possível distribuir e instalar aplicativos que utilizam como base de
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 26/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Neste artigo iremos conhecer e entender o que é o MySQL Fabric e em qual situações podemos
Os testes unitários procuram aferir a corretude do código, em sua menor fração. Em linguagens
orientadas a objetos, essa menor parte do código pode ser um método de uma classe.
Confira uma introdução ao Java 9 bem completa. Aprenda neste artigo as principais novidades do
JDK, que trará para o Java a modularização, jShell, HTTP 2.0, JMH, entre outras melhorias. Confira
Neste conteúdo você aprenderá a criar sua primeira classe na linguagem Java. Aprenda também a
Este documento apresenta as estruturas condicionais if/else e operador ternário, recursos que
possibilitam executar diferentes trechos de código com base em uma expressão booleana.
Links
Página do livro Thinking in Java, de Bruce Eckel. É um dos melhores livros para se começar a
estudar Java, e há uma edição antiga mas muito boa gratuitamente disponível no site. Em inglês.
Livro:
Tecnologias:
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 27/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Java POO
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 28/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
ÚLTIMA SEMANA!
Plano Recorrente
BLACK FRIDAY
R$89,90 /MÊS
PRIMEIROS
3 MESES
Plano Anual
R$ 49,90 A PARTIR
/MÊS DO 4° MÊS
R$ 178 de desconto
Formação FullStack completa
12 MESES = R$ 540,00
+10mil exercícios gamificados
Suporte online
+10mil exercícios gamificados
Matricule-se
APROVEITE
Perguntas Frequentes
Quem somos?
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 29/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Leonardo Carlos
Lucas Rodrigues
Estudo aqui na Dev desde o meio do ano passado! Nesse período a Dev me
ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha empresa. 32
Hoje eu
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 30/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Heráclito Júnior
Julio Cablen
Joelberth Sena
Felipe Nunes
Wanderson Oliveira
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 31/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
José Lucas
Eduardo Dorneles
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou
aprendendo muito, muito obrigado por existirem. Estão de parabéns...
Espero um dia conseguir um emprego na área.
Por Adam
Em 2010
COMENTÁRIOS
Luciano Mendel
Nível 4
Ola tenho uma dúvida, cara por que na declaração do meu construtor tipo
um exemplo 32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 32/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
}
há +1 ano
Marcio Souza
DevMedia
Oi Luciano.
this.id = id;
this.nome = nome;
Esse construtor vai receber os valores das variaveis 'id' e 'nome', que estão
na assinatura do método, e atribui-los nas variaveis da classe 'id' e 'nome'.
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 33/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
this.id = id;
}
vai atribuir o 'id' na variavel 'id' da classe e 'nome' será passado como
parametro para outro método construtor, similar a esse:
Rafael Oliveira
Nível 2
Moderacao Devmedia
Nível 0
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 34/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Silva Santos
Nível 3
Rafael Albuquerque
Nível 1
Eduardo N.toporoski
Nível
Menu
Assine agora Hospedagem web por Porta 80 Web Hosting.
Quem Somos
Fale conosco
Plano para Instituição de ensino
Assinatura para empresas
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 35/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java
Tecnologia:
HTML - CSS - Algoritmo - Javascript - React - React Native - Node.js - SQL - MySQL - UML - Scrum -
Levantamento de Requisitos - Padrão de Projeto - Teste de Software
Cursos:
HTML e CSS - Javascript - Programação para Iniciantes - Angular - React - Vue.js - Node.js - Spring - .NET
Core - Mobile - React Native - Android - Flutter - Algoritmo - Automação - Delphi - Java - PHP - Python -
SQL e Banco de Dados - Engenharia de Software - Canal Mais - Gratuitos
Artigos:
Front-End - Javascript - Iniciantes - Angular - Dart - Engenharia - Mobile - Node.js - Python - React
Native - Vue.js - Android - Banco de Dados - Delphi - Flutter - Java - Kotlin - .Net - PHP - React - Spring -
Gratuitos
DevCast:
HTML e CSS - Javascript - Angular - Engenharia - Mobile - Node.js - Python - React Native - Android -
Banco de Dados - Delphi - Flutter - Java - Automação - .Net - PHP - React - Spring - Gratuitos - Canal
Mais
Guia:
Fundamentos - .NET - PHP - Python - Java - Delphi - HTML e CSS - JavaScript - Node - React Native -
Flutter - Banco de Dados - Mobile - Spring - Arquitetura - Automação - Engenharia - + Assuntos
32
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 36/36