No livro a qual estou estudando java vi a seguinte declaração de variavel…!
não entendi nada…
o que eu sei sobre e o seguinte
private e modificador de acesso no caso essa variavel só
pode ser usada na classe a qual foi declara certo…??
se for public pode ser usada em qualquer outra classe
se eu estiver errado por favor me expliquem de uma maneira objetiva…
Nem tenho idéia sobre esse comando em java essa é minha principal
dúvida pra que isso funciona…???
é a primeira vez que eu me deparo com esse comando por favor
se alguém souber sua função me explique…!
Static e quando vc naum prescisa instanciar objeto de uma classe para usar seus métodos certo…?? mais variavel static isso que eu naum entendi…! por favor quem souber melhor sobre esses comandos por favor me ajude…!
STATIC - define que um atributo ou metodo sera de escopo de Classe, não da inatnacia, então se os modiifcadores permitires vc pode usa-los sem necessitar instanciar um objeto da classe.
FINAL - define, em caso de atributo, que não será permitido modificar o valor que este referencia, em caso de metodo, defini que este não poderá ser sobrescrito, e em caso de classe defini que a classe não pode ser estendida, como é o caso da java.lang.Math…
Final
Variaveis definidas como final não podem ter seu valor alterado apos sua atribuição.
A atribuição de um valor para uma variavel de instancia Final, deve ser executa em sua declaração ou dentro do construtor. Caso uma variavel Final não seja inicializada, um erro de compilação será exibido !
Variaveis globais e parametros tambem podem ser Final e não podem ter seus valores alterados apos de inicializadas.
Static
Uma variavel definida como static, pertence a classe não a instancia. Porem vc pode acessa-la apartir de uma classe ou de uma instancia.
o que o cara quis fazer com a linha abaixo?
private final static int aux;
bom, vc faz isso qdo você quiser ter uma constante em Java !!
cara eu vi esse tipo de variavel em um jogo que eu estou fazendo soh pra treinar lógica realmente prescisa de uma variavel que não retorna valor…!
muito obrigado vc me ajudou muito…! foi bem objetivo…!
mais aqui cara esse tipo de variável
Pra tb é novidade… ouvir falar em enumeração… vc sabe como essa variavel funciona…??
Se o atributo for apenas Final, ele não precisa ser inicializado na declarcação !!
Ele pode ser inicilizado no construtor !!
Porem se o mesmo for definido como Final e Static ele precisa ser inicilizado na declaração, pois o construtor não poderá inicializar o atributo, pois o mesmo pertence a classe não a instancia !!!
soh não estou entedendo muito bem sobre variavel static…!
não estou conseguindo pegar uma lógica pra saber como essa variavel realmente funciona…! falaram que quando eu não usar static não é necessario
iniciar a variavel com um valor exemplo:
não estou entedendu a lógica de variaveis static… alguém pode me explicar de um forma simples e objetiva…?
Precisa sim… só que sem static, o atributo faz parte da instância da classe… e você deve inicializar no construtor se não o fizer direto na criação do atributo:
public class Exemplo1 {
private final int codigo;
public Exemplo1() {
//inicializou no construtor, pois sem static, o atributo agora faz parte da instância da classe.
this.codigo = 1;
}
}
Não é a variavel que não precisar ser inicilizada, e sim, que não é necessário possui um instancia (objeto) para acessar uma variavel estatica.
por exemplo,
[code]
public class MainClass {
public final static int estatica = 10;
public final int naoEstatica= 10;
/** Creates a new instance of MainClass */
public MainClass() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//Ate aqui não foi criado nenhuma instancia e foi possivel acessar
//o atributo "estatica"
//Isso por que a variavel é estatica e pertence a classe
//É utilizado o nome da classe pra acessar a variavel
System.out.println("Variavel Estatica : " + MainClass.estatica);
//É criado uma instancia da classe MainClass
MainClass mainClass = new MainClass();
// O acesso a uma variavel não estatica é restrita ao objeto,
// pois sem o objeto, a variavel não existe
System.out.println("Variavel Não Estatica : " + mainClass.naoEstatica);
// So pra complicar um pouco mais
// O objeto pode acessar uma variavel Estatica,
System.out.println("Variavel Estatica : " + mainClass.naoEstatica);
// Mas a classe não acessa um atributo da instancia
// Aqui da erro de compilacao(System.out.println("Variavel Não Estatica : " + mainClass.naoEstatica);)
//System.out.println("Variavel Não Estatica : " + MainClass.naoEstatica);
}
variaveis ou metodos static nao dependem de um objeto instanciado, ou seja, vc pode escrever um codigo do tipo:
class Saudacao{
public static void oiStatic(){
System.out.println("oi");
}
public void oiNaoStatic(){
System.out.println("oi");
}
}
class TesteOi{
public static void main(String args[]){
Saudacao.oiStatic();
Saudacao s = new Saudacao();
s.oiNaoStatic();
}
}