Classe estática pq?

Uma dúvida entendo a necessidade de um método ou atributo estático, mais o por que de um classe estática e como realmente funciona???

exemplo

class x {
   public static x;
}


class y { 
  public static void main(String[] args) {
     X x = new X();
     x.x  = 15;
     X x2 = new X();
     System.out.println(x2.x); //imprime 15, setando no objeto x
  }
}

Blz, para métodos acontece o seguinte a primeira vez que o mesmo for chamado ele fica na memória para sempre que for chamado caso já tenha sido feito utiliza o da memória, mais é ai, qual é a vantagem e utilização de uma classe estática???

Classes estaticas nao necessitam de uma instancia da outer class. Ou seja, tendo

public class MinhaClasse {
    public static Class ClasseInner {
    }
}

voce pode fazer

MinhaClass.ClasseInner ci = new MinhaClasse.ClasseInner();

se “ClasseInner” nao fosse static, voce primeiro precisaria criar uma instancia de “MinhaClasse”.

Rafael

1 curtida

Então qualquer inner class que eu faça que eu queira instanciar fora em alguma outra classe eu deve te-la como estática?

Classe estático serve somente para inner class???

[quote=“phstc”]Então qualquer inner class que eu faça que eu queira instanciar fora em alguma outra classe eu deve te-la como estática?
[/quote]

Nao exatamente. Como eu disse no post anterior, se vc quiser instanciar uma inner class nao-estatica, voce primeiro precisa instanciar a classe “superior”, que, no caso do exemplo, instancia a “MinhaClasse”. Por exemplo:

MinhaClasse m = new MinhaClasse();
MinhaClasse.ClasseInterna ci = m.new ClasseInterna();

[quote=“phstc”]
Classe estático serve somente para inner class???[/quote]

Sim.

Rafael

1 curtida

Certo, valeu!!! :wink: