Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
>
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
Isso tbm acabou de me ajudar =D vlw
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 {
Uso:
//Primeira chamada do método estático
MinhaClasseEstatica.MinhaFuncaoEstatica();
//Criação da primeira instância
//Criação da segunda instância
//Segunda chamada do método estático
MinhaClasseEstatica.MinhaFuncaoEstatica();
Saída:
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.