Classes statiques en Java

Existe-t-il quelque chose comme une "classe statique" en Java ?

Quelle est la signification d'une telle classe ? Est-ce que toutes les méthodes de la classe statique doivent aussi être statiques ?

Dans le cas contraire, si une classe contient toutes les méthodes statiques, la classe doit-elle aussi être statique ?

A quoi servent les classes statiques ?

Eh bien, Java a des "classes statiques imbriquées", mais elles ne sont pas du tout les mêmes que les classes statiques de C#, si c'est là où vous vouliez en venir. Une classe statique imbriquée est simplement une classe qui n'a pas implicitement une référence à une instance de la classe externe.

Les classes statiques imbriquées peuvent avoir des méthodes d'instance et des méthodes statiques.

Il n'existe pas de classe statique de haut niveau en Java.

Commentaires (10)

Il existe une [classe imbriquée][1] statique, cette classe [statique imbriquée] n'a pas besoin d'une instance de la classe englobante pour être elle-même instanciée.

Ces classes [statiques imbriquées] ne peuvent accéder qu'aux membres statiques de la classe englobante [puisqu'elle ne possède aucune référence à des instances de la classe englobante...].

exemple de code :

public class Test { 
  class A { } 
  static class B { }
  public static void main(String[] args) { 
    /*will fail - compilation error, you need an instance of Test to instantiate A*/
    A a = new A(); 
    /*will compile successfully, not instance of Test is needed to instantiate B */
    B b = new B(); 
  }
}

[1] : http://download.oracle.com/javase/tutorial/java/javaOO/nested.html

Commentaires (3)

Java possède des méthodes statiques associées aux classes (par exemple, java.lang.Math ne possède que des méthodes statiques), mais la classe elle-même n'est pas statique.

Commentaires (0)