• Skip to primary navigation
  • Skip to content

Mauda

IT, Java and Music

Graduação   SCJP   Mestrado
  • Apresentação
  • Certificação Java
  • JPA
    • Exceptions
  • JSF
  • Versionamento
  • Contato

Java é puramente orientada a objetos? Atributos e Métodos Static

October 3, 2016 by Mauda 2 Comments

Conteúdo do Post:
  1. Java é puramente orientado a objeto?
  2. finnaly{

Olá Pessoal, tudo bom?

Uma duvida que muitas vezes surge quando somos inexperientes no mundo da linguagem de programação Java é se esta linguagem é puramente orientada a objetos. Como tudo na vida, muitas pessoas irão defender afirmativamente outras pessoas serão contra essa opinião. No artigo de hoje irei descrever um pouco sobre os atributos e métodos static (estáticos). Esse é um argumento algumas vezes utilizado para ir contra a afirmação de que o Java é puramente orientado a objetos. Esse post não dará a resposta final a isso, apenas irá abordar um dos motivos dessa discussão, existem inúmeros outros. Veja no post abaixo…

Java é puramente orientado a objeto?

Quando estava aprendendo as nuances de programação na época da faculdade muitas pessoas falavam que o Java segue puramente o paradigma orientado a objeto, pois tudo em Java é um objeto, inclusive Strings, (na linguagem de programação C é um array de char) e arrays em si. Apesar disso outras pessoas começavam a contrariar essa opinião afirmando que existe na linguagem Java atributos e métodos estáticos não pertencem a nenhum objeto.

Se você descer mais a fundo na especificação da linguagem Java verá que para cada Classe que ocorre uma instanciação a JVM cria dois objetos:

  1. A instância da classe propriamente dita
  2. Um Class Level Object ou arquivo .class

Assim caso você crie um objeto como no exemplo abaixo:

Java
1
Endereco endereco =  new Endereco();

A JVM irá alocar espaço em memória para a instância endereco ((Artigo sobre alocação de Memória no Java – link)) e na primeira vez que o Class Loader carregar a classe em memória, irá criar uma classe Endereco.class ((Artigo sobre Class Loader – link), que será uma classe Singleton ((Artigo sobre o padrão Singleton – link))  em memória.

A classe Class (API  da classe java.lang.Class – link)) é a classe que representa classes e interfaces durante a execução de uma aplicação Java. Além disso essa instância singleton armazena todos os atributos e métodos estáticos (static) da classe em questão. Se dentro da classe Endereco tentássemos acessar um atributo static, a instância em questão iria apontar para a instância da classe Class, Endereco.class.

Dessa forma é por isso que ao alterarmos o valor de um atributo estático esse será “alterado” para todas as instâncias daquela classe Java, mesmo que estejamos apontando o atributo via instância de uma classe Endereco.

Assim podemos afirmar que a JVM insere todos os atributos e métodos dentro da uma classe, o que torna o argumento inicial inválido.

Java Puro 2 x 0 Java Não Puro 😀

finnaly{

Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!

Até um próximo post!

Filed Under: Arquitetura, Java, Orientação a Objetos Tagged With: atributos, class, Java, metodos, static

About Mauda

Mestre em Informática, Analista de Sistemas, Professor, SCJP e Baterista. Desde 2002 trabalhando no mundo Java e ensinando pessoas sobre desenvolvimento de sistemas. Mais informações

Reader Interactions

Comments

  1. GUSTAVO DE FARIA SILVA says

    March 23, 2021 at 7:22 pm

    No entanto, vale ressaltar para que Java fosse de fato considerado puramente orientado a objetos, não deveriam existir tipos primitivos, como int ou char.

    Reply
    • Mauda says

      March 23, 2021 at 8:36 pm

      Olá Gustavo, tudo bem?

      Concordo plenamente. Outro argumento é da herança multipla que não existe no Java. Por fim como disse no começo do artigo: ¨Esse post não dará a resposta final a isso, apenas irá abordar um dos motivos dessa discussão, existem inúmeros outros.¨

      Obrigado pelo feedback e precisando estamos aqui!

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Advertisements

Copyright © 2025 · Genesis Framework · WordPress · Log in