Membros de classe Static

7 respostas
D

Eae galera, ainda to estudando Java e não to entendendo a função do static. Entendi pra q serve mas não vi um exemplo real, tipo, sei q ele economiza recursos por ter q apenas incrementar uma variavel ao inves de ficar fazendo copias (não é isso?), mas não sei onde posso usar isso. Alguem poderia dar algum exemplo? Não precisa o codigo, so quero entender a ideia.

Valeu. :lol:

7 Respostas

M

bem Duende Macabro… hehehehe, um exemplo do uso de static em uma variavel de instancia seria o encontrado no livro dos Deitel:

Suponha q tivessesmos um video game com Marcianos e outras criaturas do espaço. Cada Marciano tende a ser corajoso e disposto a atacar outras criaturas espaciais qnd esta ciente de q há pelo menos cinco Marcianos presentes. Se houver menos de cinco Marcianos presentes, todos os Marcianos tornam-se covardes. Assim, cada Marciano precisa saber a quantidadeDeMarcianos. Poderíamos dotar a classe Marciano com quantidadeDeMarciano como dado de instancia. Se fizermos isso, então cada Marciano terá uma copia separada dos dados de instancia e toda vez q criarmos um novo Marciano teremos de atualizar a variavel de instancia quantidadeDeMarcianos em cada Marciano. Isso desperdiça espaço, com copias redundantes, e tempo, para atualizar as copias separadas. Em vez disso, declaramos q quantidadeDeMarcianos será static. Isso torna quantidadeDeMarcianos um dado com escopo de classe. Cada Marciano poder ver a quantidadeDeMarciano como se fosse dado de instancia de Marciano, mas apenas uma copia da quantidadeDeMarciano estática é mantida por Java. Isso economiza espaço. Economizamos tempo fazendo o construtor Marciano incrementar a quantidadeDeMarcianos para cada objeto Marciano.

…o exemplo é um tanto extenso… e o problema super simples, mas espero q tenha exclarecido algo!

[]'s

D

Blz valeu, mas eu tenho esse livro, foi como eu disse, eu entendi oq é mas so não entendo onde usar, queria saber um exemplo real tipo, quando tem um programa q tenha q fazer isso com isso, ae vc usa static. 8O
É mais ou menos isso. :slight_smile: :smiley: :o

T
"Duende_Macabro":
Blz valeu, mas eu tenho esse livro, foi como eu disse, eu entendi oq é mas so não entendo onde usar, queria saber um exemplo real tipo, quando tem um programa q tenha q fazer isso com isso, ae vc usa static. 8O É mais ou menos isso. :) :D :o

Bom cara... o static é quando vc tem algo que é imutavel, idependente de qual é o opjeto instanciado... vamos a um exemplo bem pequeno

public class Pessoa {
 public static final int MASCULINO = 1;
 public static final int FEMININO = 2;
 private static final String M = "masculino";
 private static final String F = "feminino";

 private int sexo;

 public Pessoa(int sexo) {
   this.sexo = sexo;
 }

 public String getSexo() {
   if (MASCULINO == 1)
      return M;
   else
      return F;
 }
}
bom neste caso ai... naum vale a pena... criar um variavel com o nome do sexo para cada objeto criado...

pois pra qualquer objeto criado... as opções saum as mesmas...

métodos staticos... é um método q pode ser executado... sem existir uma instancia do objeto... (se quizer explicação sobre isso tb... só falar)

existe muitos casos q objetos... necessitam de um contador de quantos objetos existem (quando se trata de um objeto lista)... nestes casos... geralmente se poem um contador estatico... pois ele é o mesmo para todos objetos

eltonk

Duende… o negócio é mais simples do que vc imagina =)

Olha só…
Eu tenho uma classe que monta relatórios para a web, essa classe monta uma tabela já toda formatada e certinha para a publicação. Essa classe tem vários métodos que dependendo do tipo do relatório vão ou não sendo chamadas, o que no final vira um relatório do geitnho que eu quero…

Como todos esses métodos utilizam a mesma variável para ir montando o meu relatório, eu crio uma variável static e trabalho com essa variável em toda minha classe (em todos os métodos desta classe).

Muito mais simples do que eu criar em cada método uma variável tabela e ficar passando de método a método o valor dessa variável…

Poupo esforços e recursos… pois a cada nova variável é consumida mais recursos da máquina. Assim eu trabalho com 1 variável somente =)

Deu para pegar uma aplicação na prática mesmo?!

Imagine isso como se fosse uma variável Global…

Abraços,

D
Blz, valeu a todos, intendi o static mas so mais uma coisa  :lol: . Por exemplo, se eu tenho 2 classes q se chamam Classe1 e Classe2, eu posso fazer isso na Classe1

.

Classe2 teste = new Classe2();

int variavel = teste.metodo();

.

Esse metodo se fosse static poderia ser acessado simplesmente assim:

.

int variavel = Classe2.metodo();

.

Certo?

Mas ele não sendo static isso não acontece ne?

:lol:  :o  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:">
T

“Duende_Macabro”:
“Another-X”:

métodos staticos… é um método q pode ser executado… sem existir uma instancia do objeto… (se quizer explicação sobre isso tb… só falar)

Blz, valeu a todos, intendi o static mas so mais uma coisa  :lol: . Por exemplo, se eu tenho 2 classes q se chamam Classe1 e Classe2, eu posso fazer isso na Classe1

.

Classe2 teste = new Classe2();

int variavel = teste.metodo();

.

Esse metodo se fosse static poderia ser acessado simplesmente assim:

.

int variavel = Classe2.metodo();

.

Certo?

Mas ele não sendo static isso não acontece ne?

:lol:  :o  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:"></blockquote>

ó

… c vc tem um método estatico… ele tanto pode ser acessado assim

Classe.metodo();

como

minhaClasseInstanciada.metodo();

mas o segundo modo é uma pessima pratica de programação…

bom…

c o método naum é estatico… vc naum pode fazer
Classe.metodo() … isso é um erro de sintaxe…
pois isso exigi q este método seja o mesmo para qualquer q seja a classe

D

Blz, intendi tudo, valeu a todos.

:lol: :stuck_out_tongue:

Criado 6 de março de 2004
Ultima resposta 7 de mar. de 2004
Respostas 7
Participantes 4