Como criar uma Classe Estatica?

Boa noite.
Eu estou lendo o Java, Use a Cabeça. Entendi o motivo do modificador Static, suas regras e utilidades para ser utilizado em Métodos e Váriaveis.

Porem, no livro não está falando sobre como criar uma “Classe Estatica”, ou se está ainda não cheguei nessa parte ou infelizmente estava com muito sono na hora que li hehe.

Podemos criar classes estaticas? Caso positivo, por que o exemplo abaixo apresenta erro?

[code]public static class Estatica {

static int A,B;

int Somar(A,B){
	static int C = A+B;
	return(C);
}

}[/code]

Até onde eu sei, em POO só é possível realizar a declaração de Variáveis e Métodos como estáticos. No caso de uma classe acho que não faria sentido visto que o fato de um método ou variavel ser estatico faz com que ele pertencam à propria classe e não ao objeto. Como seria uma classe perterncer a ela mesma? Rsrsrs.

Bem, vamos aguardar outras respostas.

Da pra criar classe statica sim, porem a classe tem que ser interna.

Vixe, é mesmo! Mas nunca usei! E sinceramente não vejo utilizade em ter uma classe interna. É só para acessar os mesmos atributos privates? Sempre tive essa dúvida!

Para que vc precisa de uma Classe estática?

Em java não existe classes estáticas*, até pq não faz muito sentido a classe em si ser estática, o q voce pode ter eh uma classe com Todos os membros static, e acessa os membros estáticos da classe com Estatica.A por exemplo.

  • Voce pode sim, na verdade, ter uma classe interna estática, mas se vc ta começando eh melhor deixar pra depois, até pq vc nao vao encontrar tantas utilidades para isto mesmo.
public class A{ 
  ... 
  public static class B{ 
    ... 
  } 
} 

OK, intendi.
Muito obrigado pela ajuda de todos.

Realmente não há utilidades de se ter uma classe estatica pelo que parece né…

O que eu pretendia era ter uma classe, onde poderiam se utilizar seus métodos estaticos, e que ninguem instancia-se.
Mais para isso acredito que basta deixar a classe abstrata e seus métodos necessários, estaticos.

Na verdade o ideal eh deixar a classe final e declarar seu construtor como private, assim ninguem poderá estender sua classe e instancia-la. A classe java.lang.Math do java funciona assim.

Mas tome cuidado com classes só de métodos estáticos, elas só são úteis em poucos casos, e eh um caminho fácil pra um design OO ruim.
Pense bem, e poste aqui qualquer dúvida.

1 curtida

Rems, muito obrigado!
Ainda estou lendo sobre o moderador static, é exatamente a classe java.lang.Math que o livro utiliza como exemplo.
Quando eu criei o tópico eu achava que a classe era estática por não poder ser instanciada, o que já me explicara que é inválido.

Agora intendi exatamente o que você esta querendo dizer,
Deixa-lá como final e com construtor private, irá impedir que alguem crie objetos dela ou faça um Enorme Caos a extendendo e sobrepondo seus métodos!

Caso eu tenha entendido errado, por favor me corrija.
Obrigado!

1 curtida

Exatamente, mas indo mais além, veja se realmente a classe que vc for implementar precisa de métodos estáticos, é muito fácil se perder e fazer um código procedural e não orientado a objetos usando statics.