Modificadores

E ae pessoal,
bom, estou estudando java e fiquei com uma dúvida. Qual a principal diferença entre public static, private static, ou somente static?

Estou perguntando isso, pq algumas vezes é preciso instanciar o objeto como por exemplo:

JButton x = new JButton(‘teste’)

e outras vezes é só chamar como por exemplo:
JOptionPane.showMessageDialog(null, ‘teste’).

Não sei se estou certo, mas acho q isto deve ter alguma coisa a ver com os modificadores Na certeza q vao me ajudar, espero respostas…

Grato

Bom…vamos lá…
primeiro que public e private são modificadores de acesso e static é uma propriedade…
O modificador static, diz que sua variável é presa a classe, ou seja a variável pertence a classe aonde ela está declarada…no caso ela NÃO é uma variável de instancia…e sim variável estática…
isso funciona da mesma maneira para metodos staticos…
classes nunca podem ser estaticas…claro…
Public é o modificador de acesso menos restrito que temos, qualquer classe dentro do pacote pode enchergar os atributos public…
Private é o modificador de acesso mais restrito que temos, somente dentro da classe aonde os atributos private são declarados é que podemos encherga-los

Ok, valeu, mas vc me disse mais a respeito de variáveis. E quanto aos métodos? Por exemplo, quando eu preciso instanciar um objeto, como dito acima, ou apenas chamar a classe junto ao método desejado (exemplo disso seria o método showMessageDialog da classe JOptionPane).

Vlw

Se o metodo for statico ele pertence a classe, então você não precisa criar uma instancia você usa o metodo usando direto o nome ou dando um import statico

JOptionPane.showMessageDialog(null, ‘teste’)

Perceba que JOptionPane é o nome de uma classe e não uma instância de uma classe, certo? vc não fez um new JOptionPane … assim sendo o método showMessageDialog é publico (pois vc consegue invocar, resumidamente) e é static, pois vc acessa de forma estática, sem uma instância da classe.

Blz, galera valeu mesmo, esclareu bastante.

Tem um tutorial mto bom aki tb, quem tb estiver com dúvida é só acessar:

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

Essa definição é a visibilidade default.

[quote=akumaldo]
Public é o modificador de acesso menos restrito que temos, qualquer classe dentro do pacote pode enchergar os atributos public…[/quote]
Já a visibilidade public faz com que o membro seja acessível à qualquer classe de qualquer pacote, basta usar import.

Eu me enrolei uma vez com esses conceitos, e aqui no fórum mesmo o pessoal me ajudou.

bom eu respondi um topico semelhante um dia desse mais vamos la:

public está disponivel ao mundo ou seja sao variaveis glovais vc pode chamar dentro de um metodo ou nao… iai vai.
private - está restrito apenas naquele metodo fora dali ele nao existe para os demais…

static - funciona da seguinte forma é algo q nao muda por exemplo desde qdo vc nasceu a formula de PI mudou? ou é a mesma?

a classe Math eh um exemplo vc pode importa-la em qualquer classe… que sempre sera a mesma… ela é um public static!! acho q ajudei…
um exemplo melhor de public e private eh:

“vc é um administrador de rede(public) e tem um subordinado(private), para esse subordinado vc diz q ele apenas pode monitorar o setor de vendas e fiscal da empresa ja o admistrador tem acesso a todos os setores” espero ter ajudado parceiro!!

[b]
a ideia é exatamente essa do meu brother camilo

sem comentarios

:idea: otimo exemplo

[/b]

é isso ae…nada a acrescentar…

Tem sim:
E o que dizer de variáveis declaradas sem modificadores, dentro de um método?

Dentro de um método o único modificardor que pode ser aplicado é o FINAL. Se uma variável for declarada com final:

final int x = 10;

significa que essa variável nunca poderá ter seu valor alterado…

Ok??

[quote=knik]Tem sim:
E o que dizer de variáveis declaradas sem modificadores, dentro de um método?[/quote]

Variaveis dentro de metodos são chamadas de variáveis locais, elas só existem enquanto o metodo existir na memoria…depois que ele deixa de existir elas ficam sujeitas a serem pegas pelo coletor de lixo…
por isso o unico modificador possível é o final como nosso amigo disse…que não se aplica ao acesso da variável e sim ao valor dela que é constante

Static é o que pertence a classe e não a instância, que me diz do código abaixo:

    static double pi = Math.PI;
    
    public static void main(String[] args) {
        pi++;
        System.out.println(pi);
    }

Percebe que o valor de pi é alterado?
Não é porque é static que não muda, se você quisesse que o valor não fosse alterado deveria ser final, como o atributo PI da classe Math.

Logo o código abaixo não compila pois o valor de pi não pode ser alterado:

    static final double pi = Math.PI;
    
    public static void main(String[] args) {
        pi++;
        System.out.println(pi);
    }

Blz? :smiley:

[quote=camilolopes]bom eu respondi um topico semelhante um dia desse mais vamos la:

public está disponivel ao mundo ou seja sao variaveis glovais vc pode chamar dentro de um metodo ou nao… iai vai.
private - está restrito apenas naquele metodo fora dali ele nao existe para os demais…

static - funciona da seguinte forma é algo q nao muda por exemplo desde qdo vc nasceu a formula de PI mudou? ou é a mesma?

a classe Math eh um exemplo vc pode importa-la em qualquer classe… que sempre sera a mesma… ela é um public static!! acho q ajudei…
um exemplo melhor de public e private eh:

“vc é um administrador de rede(public) e tem um subordinado(private), para esse subordinado vc diz q ele apenas pode monitorar o setor de vendas e fiscal da empresa ja o admistrador tem acesso a todos os setores” espero ter ajudado parceiro!![/quote]

Camilo,

   Uma pequena correção nessa parte de static que vc citou. Bom variaveis staticas podem mudar sim =), podem ser atribuidos novos valores e por ae vai. A diferença é que esse valor é visivel para todas as instancias do sistemas que acessam aquela classe com a variavel statica. Exemplo:

 Dois usuarios acessando uma aplicação cujo existe uma variavel estatica na classe q os dois estão tentando acessar. 

Usuario 1 - modificou o valor da variavel pra X
Usuario 2 - tava usando a variavel com valor Y e do nada o valor foi pra X
Problema - Muitos dos desenvolvedores pecam por esse lado, acabam usando variavel staticas de forma erronea prejudicando o funcionamento correto de um sistema.
Solução - Estruturar bastante seu sistema pra q isso não aconteça e faça uso de static da maneira melhor possivel.

Espero ter sido claro quando a variaveis staticas.