Bonjour,
Sauriez vous me dire c koi une classe Statique, à quoi elle sert et comment la déclare-t-on ?
Merci d'avance !
Bonjour,
Sauriez vous me dire c koi une classe Statique, à quoi elle sert et comment la déclare-t-on ?
Merci d'avance !
Bonjour, je crois que tu voulais dire static et non pas Statique.
Une classe ne peut pas être static, c'est un mot clé réservé uniquement aux méthodes et variables.
FAQ : Que signifie le mot-clé static ?
Salut,
Les classes internes peuvent être static, et dans ce cas elles ne sont plus lié à une instance de la classe conteneur : Quels sont les différents types de classes internes (nested classes) ?
a++
Bonjour,
je vais essayer de te répondre de mon mieux. Je crois que le mot clé "static" peut s'appliquer à des attributs ou des méthodes, mais pas à une classe. (merci de me corriger si je me trompe)
En Java, on peut définir des champs qui au lieu d'exister dans chacune des instances de la classe, n'existent qu'en un seul exemplaire pour toutes les instances de la même classe. Il s'agit en quelque sorte de données globales partageés par toutes les instances d'une même classe. On parle alors de champs de classe ou champs statiques. De la même façon on peut définir des méthodes de classe (ou statiques) qui peuvent être appelées indépendamment de tout objet de classe (c'est le cas de la méthode "main") (Programmer en Java, Claude DELANNOY)
J'espère que c'est plus clair.
Je crois que tu fais une confusion entre la classe interne static et le pattern singleton.
http://en.wikipedia.org/wiki/Singleton_pattern#Java
Merci pour vos reponses !
voilà ce que j'ai trouvé aprés une petite recherche (merci de me corriger si je me trompe) :
- une classe statique est une classe dont tous les attributs et méthodes sont déclarés "statis".
- ses attributs sont crées en un seul exemplaire.
A ne pas confondre toutefois avec le singelton, qui peut être programmé pr n'être crée qu'à la demande (en une seule copie bien entendu). de plus une classe statique ne peut hériter d'une interface alors que c'est le cas pour un singleton.
Merci d'ajouter des précisions s'il y en a![]()
Quelques précisions :
Une classe interne (nested) à accès par défaut aux attributs et méthodes "public" de l'instance de la classe qui la contient, sauf si elle est déclarée static justement. Par contre, ce mot clef n'empèche pas la classe "nested" d'hériter comme une classe ordinaire.
Sinon, un attribut ou une méthode "static" est appelable sans avoir à instancier d'objet de cette classe. Cela est utilisé par exemple pour implémenter le pattern du singleton.
Tu veux sans doute parler d'une classe dont tous les membres sont static !
Mais bon on ne peut pas parler de classe à ce niveau là car ce n'est pas vraiment de la programmation objet !
Il a accès à toutes les attributs et méthodes, quel que soit leurs visibilités...
(toutefois dans le cas d'un attribut private, le compilateur génèrera en fait une méthode d'accès).
Enfin cela est vrai même pour les classes interne static. Par contre il n'y a aucun accès à l'instance de la classe parente :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 class Outer { private String name; public class Inner { public void method() { // On accède au nom de l'instance du parent : System.out.println(Outer.this.name); } } public static class Nested { public void method(Outer anotherOuter) { // On accède au nom de l'instance reçu : System.out.println(anotherOuter.name); } } }
Partager