quando faço isso :
public static final double G = 9,81;
public static void main(Strings[] args)
{ System.out.println(G + " metros por segundo ao quadrado");
}
notem que outros métodos podem usar a constante “G”
porem porque não posso fazer isso ???
public final double G = 9,81;
e outros metodos usarem essa constante ???porque com o static eu posso acessar em qualquer lugar ??? a linha acima tambem não tem o modificador de acesso “public” ???
Membros estaticos pertencem as suas respectivas classes. Podemos acessar os mesmos usando uma variavel de referencia assim
MinhaClasse varRef;
varRef.meuMetodoEstatico();//acessando método estático
varRef.minhaVarEstatica; //acessando membros primitivos estáticos
ou assim usando somente nome da classe
MinhaClasse.meuMetodoEstatico();//acessando método estático
MinhaClasse.minhaVarEstatica; //acessando membros primitivos estáticos
É importante ressaltar que não é necessário ter uma instância da classe para acessar os membros estáticos. Eles são carregados junto com a classe e pertencem a classe e não especificamente a uma instância (sei que jah afirmei isso mas redundância as vezes ajuda a memorizar).
eu acho que o código que vc almeja é o seguinte:
public class MinhaClasse {
public final double G = 9.81; //não use virgula aqui
public static void main( String args[] )
{
System.out.println( MinhaClasse.G + " metros por segundo ao" +
" quadrado");
//ou assim pq métodos estáticos podem acessar variáveis estáticas diretamente
System.out.println( G + " metros por segundo ao quadrado");
}
}
Quando uma coisa (variavel, metodo ou classe) estah marcada como public, ela pode ser vista por outras classes.
Quando uma coisa (variavel ou metodo) estah marcada como static, ela pode ser vista por qualquer outra coisa, mas nao pode ver as que nao sao estaticas.
Alguem posta a explicacao longa e chata sobre o que sao atributos de classe e atributos de instancia, as diferencas, os pros e contras, e tudo mais?
Por enquanto, eh suficiente dizer que voce nao quer colocar variaveis estaticas no seu sistema
e quanto a explicação do CV eu viajei mesmo, a primeira parte sobre o public eu já estou ligado porém a segunda parte onde ele diz que um metodo ou variavel estatica só enxerga coisas estaticas ai me confundiu todo !!!
[quote=alpharagga]Vinicius, não entendi a parte onde você coloca
varRef, isso é um objeto ???se for já entendi
agora quanto a explicação do 3º CODE vc coloca assim :
mas a váriavel é estatica ???
varRef eh uma váriavel de referencia de objeto (técnicamente:bom eh uma variável que armazena num formato dependente de plataforma a localização do objeto na memória). Simplificadamente eh como se fosse um ‘apontador’ para objetos, quando ele (a) não está apontando pra nenhum objeto ela (e) aponta pra null.
Eh na segunda parte foi erra meu se esquecer como eu esqueci de colocar static dah um erro de compilação.
bom corrigindo aquela linha:
public static final double G = 9.81; //agora sim!!!!