Leovip 0 Denunciar post Postado Julho 15, 2012 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
Gabriel Heming 766 Denunciar post Postado Julho 16, 2012 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áticavalor 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
Leovip 0 Denunciar post Postado Julho 16, 2012 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
rodrigo.rrch 0 Denunciar post Postado Julho 17, 2012 Isso tbm acabou de me ajudar =D vlw Compartilhar este post Link para o post Compartilhar em outros sites