Static, public ou privado?

5 respostas
A

To fazendo um programa pra estudar o padrão de projeto DAO…
nesse programa tem uma class CadastroClienteGraf que é a parte visual(swing e awt), ClienteDAO q tem métodos de conexão com o banco de dados e ClienteJavaBean que tem as minhas variáveis com os seus métodos get e set.

As variáveis dentro de ClienteJavaBean deixei todas privadas e os métodos get e set públicos
ClienteDAO só tem métodos e eles são públicos tb.
Na classe CadastroClienteGraf até o momento está com as variáveis privadas e os métodos públicos… no entanto apresenta alguns erros dizendo que os métodos e variáveis precisam ser static nessa class para ficar visível ao ClienteJavaBean
-> As variáveis e métodos da classe CadastroClienteGraf são JTextField, JComboBox e etc.

Devo deixá-las staticas?
É a melhor forma?
Quando devo deixar static, public ou privado?

5 Respostas

E

private = vc só tem acesso dentro da mesma classe
public = vc tem acesso ao a qualquer lugar do sistema

static não tem nada haver com private e public , é quando o atributo(variavel) é da classe e não do objeto em si

exemplo

quando vc tem um metodo statico vc pode acessar pelo noma da classe Classe.metodoStatico…

A

Entendi! Mas uma dúvida ficou.
Antes eu tava criando uma estancia da class para invocar um metodo.
Por exemplo… CadastroClienteGraf cadCliGrf = new CadastroClienteGraf(); … cadCliGrf.getJTextFieldNome().getText();

Qual é a diferença de fazer isso… com chamar Classe.metodoStatico?

Tens prols e contras?
Tenho que ficar atento com alguma coisa pra fazer isso?

ViniGodoy

Não use static porque:

  1. Seu static teria que ser público, o que torna ele uma variável global. Elas tendem a tornar o programa instável, já que com o tempo vc esquece de onde são usadas.
  2. Não é uma solução encapsulada. A classe que controla o JTextField pode fazer verificações, coisas static não são verificadas;
  3. Variáveis static jamais são coletadas da memória, a menos que vc explicitamente set elas como null. Isso cria altas chances de memory leaks no seu programa;
  4. Variáveis static podem deixar uma implementação completamente hostil contra multi-threading. Nem com sincronização resolveria o problema.
A

Entendi! então acho q é melhor criar a instancia da class msm =]
vlw!

WellingtonRamos

Sem ver exatamente o que você fez, é pouco provável que possamos ajudá-lo, mas, julgo que, pela mensagem, você está fazendo algo como:

Ao invés de obter a instância existente de CadastroClienteGraf.

Criado 13 de maio de 2011
Ultima resposta 13 de mai. de 2011
Respostas 5
Participantes 4