Duvida sobre Static

7 respostas
mau_rs

pessoal pergunta boba: qual a diferença de

public JTextField texto = new JTextField();

e

public static JTextField texto = new JTextField();

7 Respostas

T

acho q este link pode te ajudar

http://www.guj.com.br/posts/list/36637.java#194310

Rafael_Carneiro

Um dos melhores tópicos sobre a palavra reservada static: http://www.guj.com.br/posts/list/114680.java

peczenyj

http://guj.com.br/java.tutorial.artigo.121.1.guj

S

Nunca usei static para um JTextField, mas seria o mesmo JTextField para qualquer instância desta classe que ele pertence. Acredito que se você tiver várias instâncias abertas e fizer alguma operação neste JTextField em alguma delas, irá replicar para todas.
O que você pretende fazer com isso? Talvez não seja necessário usar o static.
[]'s

Lavieri

a diferença é que static quer dizer que só pode haver 1... igual high-lander (axo que escreve assim) ... isso quer dizer que é uma propriedade compartilhada por todas as intancias dakele objeto... por exemplo

public class Pessoa {
   private static String ultimoNome; //propriedade estatica
   
   private String nome; //propriedade não estatica
   private String nomeAntesDeMim; //propriedade não estatica   

   public Pessoa(String meuNome) {
       if (ultimoNome == null)
           nomeAntesDeMim = "ninguem";
       else
           nomeAntesDeMim = ultimoNome;
       nome = meuNome;
       ultimoNome = meuNome;
   }

   //método normal
   public String getNome() {
       return nome;
   }
   
   public String getNomeAntesDeMim() {
       return nomeAntesDeMim;
   }
   
   //método estatico
   public static String getUltimoNome() { 
       return ultimoNome;
   }
   
}
agora usando essa classe... para exemplificar
Pessoa joao = new Pessoa("joao");

System.out.println("Ultima pessoa cadastrada = :" + joao.getUltimoNome());
Pessoa pedro = new Pessoa("pedro");
System.out.println("Ultima pessoa cadastrada = :" + pedro.getUltimoNome());
Pessoa augusto = new Pessoa("augusto");
System.out.println("Ultima pessoa cadastrada = :" + augusto .getUltimoNome());

//...

System.out.print("Meu nome é " + joao.getNome())
System.out.print(" antes de mim foi cadastrado " + joao.antesDeMim())
System.out.println(" e a ultima pessoa cadastrada foi " + Pessoa.getUltimoNome());

System.out.print("Meu nome é " + pedro.getNome())
System.out.print(" antes de mim foi cadastrado " + pedro.antesDeMim())
//veja que mesmo invocando diretamente de pedro sai o mesmo nome
System.out.println(" e a ultima pessoa cadastrada foi " + pedro.getUltimoNome());

System.out.print("Meu nome é " + antonio.getNome())
System.out.print(" antes de mim foi cadastrado " + antonio.antesDeMim())
System.out.println(" e a ultima pessoa cadastrada foi " + Pessoa.getUltimoNome());



//a maneira mais usual de invocar um método estatico é assim
System.out.println("a ultima pessoa cadastrada foi " +Pessoa.getUltimoNome());

note que quando o valor de ultimoNome muda... ele muda para todos.... pois esse valor é estatico e portanto compartilhado por todos, ele pertence a classe e não a um objeto instanciado dakela classe...

eltonads

É Highlanger Lavieri :smiley:

Att.,

diegosantiviago

Acho que você está querendo complicar onde não é necessário.

Criado 6 de fevereiro de 2009
Ultima resposta 6 de fev. de 2009
Respostas 7
Participantes 8