IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

La classe Statique en Java


Sujet :

avec Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 75
    Par défaut La classe Statique en Java
    Bonjour,

    Sauriez vous me dire c koi une classe Statique, à quoi elle sert et comment la déclare-t-on ?

    Merci d'avance !

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    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 ?

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Citation Envoyé par morph41 Voir le message
    Une classe ne peut pas être static, c'est un mot clé réservé uniquement aux méthodes et variables.
    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++

  4. #4
    Membre confirmé Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut
    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.

  5. #5
    Membre confirmé Avatar de bandit_debutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut
    Citation Envoyé par bandit_debutant Voir le message
    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)
    Je me suis trompé et j'ai appris quelque chose

  6. #6
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    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) ?
    Je me coucherai moins bête ce soir, encore une fois...

    Est-ce qu'il ne faudrait pas modifier la partie de la FAQ que j'ai donné en 1er lien pour indiquer ce cas particulier?
    extrait de la FAQ : "Le mot-clé static est utilisable pour des variables, méthodes ou blocs de code."

  7. #7
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Citation Envoyé par amine_en_france Voir le message
    Sauf erreur de ma part
    Il me semble qu'une classe static est une classe qui permets d'accéder au attribut, methode sans avoir besoin de l'instancier et le constructeur n'est pas obligatoire
    Une classe non déclaré statique peut etre appelé d'une manière statique exemple
    J'accede a la methode getVariable() de la classe (Class) d'une manière static.

    Je ne suis pas sur mais je pense que pour déclarer une classe static il suffit de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static class Class{}
    A creuser d'avantage (j'ai jamais eu recours a des class static

    Cdt

    ++
    Je crois que tu fais une confusion entre la classe interne static et le pattern singleton.
    http://en.wikipedia.org/wiki/Singleton_pattern#Java

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Par défaut
    Citation Envoyé par zorm Voir le message
    Je crois que tu fais une confusion entre la classe interne static et le pattern singleton.
    http://en.wikipedia.org/wiki/Singleton_pattern#Java
    T'as raison, autant pour moi.
    J'ai supprimé mon message pour ne pas induire les gens en cette erreur

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 75
    Par défaut
    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

  10. #10
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Citation Envoyé par mrjeronimo Voir le message
    - une classe statique est une classe dont tous les attributs et méthodes sont déclarés "statis".
    Ce n'est pas ce qui a été dit haut dessus.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 43
    Par défaut
    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.

  12. #12
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mrjeronimo Voir le message
    - 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.
    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 !



    Citation Envoyé par baos! Voir le message
    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.
    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);
    		}
    	}
     
    }

Discussions similaires

  1. Importer un *.class sans le *.java dans un projet.
    Par Agent22 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 15/09/2006, 17h00
  2. classe statique objet
    Par drKzs dans le forum Langage
    Réponses: 8
    Dernier message: 04/09/2006, 11h58
  3. Classe INET et Java...
    Par Julien_riquelme dans le forum VBScript
    Réponses: 2
    Dernier message: 10/05/2006, 08h44
  4. [Soundex] Class soundex en java
    Par shaun_the_sheep dans le forum Multimédia
    Réponses: 8
    Dernier message: 24/01/2006, 14h45
  5. Classe statique
    Par jeje99 dans le forum Langage
    Réponses: 12
    Dernier message: 04/01/2006, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo