Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leovip

[Resolvido] POO Java

Recommended Posts

Galera eu estou iniciando agora com desenvolvimento na plataforma Java porém já tenho sólidas experiências em programação. Bem a minha dúvida pode ser considerada trivial mas vamos lá:

 

Com base nos meus conhecimentos, toda classe que for instanciada deverá ter o comando new(referência do objeto):

 

Integer x = new Integer(5);

 

Porém existem classes que não necessitam esse trecho de código, sendo que a classe "já vem instanciada". Exemplo disso é a classe JOptionPane que quando a importamos já podemos acessar os seus métodos através do " . ":

 

JOptionPane.método.

 

Minha dúvida está aí:

Quando importo a classe ela já é instanciada?

Ou existe algum esquema do paradigma de OO que eu estou boiando(eu acho que é isso)?

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, você não necessita da instância da classe JOptionPane pois os métodos referenciados são estáticos. Quando um método é estático, não necessita ser criada uma instância da classe.

 

Exemplo de uma classe estática:

public class MinhaClasseEstatica {

   private static int estatico = 0;
   protected int naoEstatico = 0;


   public static void MinhaFuncaoEstatica() {
       MinhaClasseEstatica.estatico++;
       System.out.println("minha funcao estática");
       System.out.println("valor " + MinhaClasseEstatica.estatico);
   } 

   public void MinhaFuncaoNaoEstatica() {
       this.naoEstatico++;
       System.out.println("minha funcao não estática");
       System.out.println("valor " + this.naoEstatico);
   } 

}

 

Uso:

//Primeira chamada do método estático
MinhaClasseEstatica.MinhaFuncaoEstatica();

//Criação da primeira instância
MinhaClasseEstatica minhaClasseEstatica = new MinhaClasseEstatica();
minhaClasseEstatica.MinhaFuncaoNaoEstatica();

//Criação da segunda instância
MinhaClasseEstatica minhaClasseEstatica2 = new MinhaClasseEstatica();
minhaClasseEstatica2.MinhaFuncaoNaoEstatica();        

//Segunda chamada do método estático
MinhaClasseEstatica.MinhaFuncaoEstatica();

 

Saída:

minha funcao estática

valor 1

 

minha funcao não estática

valor 1

 

minha funcao não estática

valor 1

 

minha funcao estática

valor 2

 

Veja bem que a classe possui dois métodos. E somente um deles possui a palavra chave static.

 

Quando o método possui a plavra chave static, significa que você poderá utilizá-lo sem a instancia da classe e, em um escopo global, seu comportamento sempre será o mesmo, indiferente das instâncias da classe. Já um método não estático, terá um comportamento dependendo do seu objeto.

 

Veja bem, que métodos estáticos são relacionados a classe e não a um objeto. Diferente de métodos não estáticos, que são relacionados aos objetos de uma classe.

 

Pela saída, você pode perceber que, toda a instância de uma classe, será única, sendo que ambas as impressões das instâncias o número que aparece é 1. Já ao método estático, sua segunda chamada já imprime o número 2, indiferente as instâncias criadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, você não necessita da instância da classe JOptionPane pois os métodos referenciados são estáticos. Quando um método é estático, não necessita ser criada uma instância da classe.

 

Exemplo de uma classe estática:

public class MinhaClasseEstatica {

   private static int estatico = 0;
   protected int naoEstatico = 0;


   public static void MinhaFuncaoEstatica() {
       MinhaClasseEstatica.estatico++;
       System.out.println("minha funcao estática");
       System.out.println("valor " + MinhaClasseEstatica.estatico);
   } 

   public void MinhaFuncaoNaoEstatica() {
       this.naoEstatico++;
       System.out.println("minha funcao não estática");
       System.out.println("valor " + this.naoEstatico);
   } 

}

 

Uso:

//Primeira chamada do método estático
MinhaClasseEstatica.MinhaFuncaoEstatica();

//Criação da primeira instância
MinhaClasseEstatica minhaClasseEstatica = new MinhaClasseEstatica();
minhaClasseEstatica.MinhaFuncaoNaoEstatica();

//Criação da segunda instância
MinhaClasseEstatica minhaClasseEstatica2 = new MinhaClasseEstatica();
minhaClasseEstatica2.MinhaFuncaoNaoEstatica();        

//Segunda chamada do método estático
MinhaClasseEstatica.MinhaFuncaoEstatica();

 

Saída:

 

 

Veja bem que a classe possui dois métodos. E somente um deles possui a palavra chave static.

 

Quando o método possui a plavra chave static, significa que você poderá utilizá-lo sem a instancia da classe e, em um escopo global, seu comportamento sempre será o mesmo, indiferente das instâncias da classe. Já um método não estático, terá um comportamento dependendo do seu objeto.

 

Veja bem, que métodos estáticos são relacionados a classe e não a um objeto. Diferente de métodos não estáticos, que são relacionados aos objetos de uma classe.

 

Pela saída, você pode perceber que, toda a instância de uma classe, será única, sendo que ambas as impressões das instâncias o número que aparece é 1. Já ao método estático, sua segunda chamada já imprime o número 2, indiferente as instâncias criadas.

 

Pow cara valeu mesmo, agora eu consegui entender mais um dos conceitos da orientação ao objeto.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.