Estudei static em cursos anteriores mas assistindo esse aulas java.lang me retornou a duvida de quando é necessário usar static seja em atributo ou método. Alguém sabe me dizer ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Estudei static em cursos anteriores mas assistindo esse aulas java.lang me retornou a duvida de quando é necessário usar static seja em atributo ou método. Alguém sabe me dizer ?
Olá Henrique, tudo bem com você?
a palavra-chave static dentro do contexto de uma classe, significa que o atributo ou método pertence à classe, e não ao objeto criado a partir da classe. Como assim?
class Bolo{
private static quantidadeDeBolos = 0;
private String sabor;
private boolean recheio;
public Bolo(){
quantidadeDeBolos++;
}
public static getQuantidade(){
return quantidadeDeBolos;
}
}No código acima, a classe bolo tem o atributo static quantidadeDeBolos que pertence à classe Bolo. Na prática, isso significa que cada Bolo criado a partir desse molde não vai ter esse atributo, apenas o atributo sabor e se ele tem recheio.
Nesse caso, o atributo static funciona como um contador de quantos bolos foram criados a partir da classe Bolo, e para acessar essa quantidade podemos utilizar o método static a partir da própria classe!
Bolo.getQuantidade()
Que vai retornar quantos objetos bolo já foram criados com essa classe.
A palavra static causa um pouco de confusão no ínicio, por isso vou deixar alguns materiais complementares para ficar mais claro o funcionamento:
static keyword in java(GeeksForGeeks) - guia da palavra-chave static do GeeksForGeeks, que está em inglês, mas caso seja necessário você pode utilizar a ferramenta de tradução do seu navegador!
static keyword in java(JavaAtPoint) - guia do JavaAtPoint, que também está em inglês mas caso necessário você pode utilizar a ferramenta de tradução do navegador.
Ambos os guias detalham com mais exemplos a diferença de um membro da instância versus um membro da classe (static), para melhor compreensão do tema!
Me coloco à disposição e bons estudos!