[Java] class static [Fermé]

Signaler
Messages postés
187
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
21 octobre 2005
-
 Java 4 ever -
Bonjour,

Est-il possible en java de créer une class static? Par exemple:
public static class MaClass
mais ça n'a pas l'air d'être accepté.

Faut-il donc définir tous les attributs et méthode de la class en static?

Merci d'avance

Plus ça rate, plus on a de chances que ça marche.
A voir également:

8 réponses

Bonjour à vous tous,
Bon c topic est vieux mais bon....
Pour les futurs à venir ici , il ne faut par partir dans ces conditions de bricolage donc je vous fait un petit récapitulatif pour les besoins énoncés dessus :
Si l'on ne veut pas qu'un classe puisse être instanciée il ne faut surtout pas la mettre en abstraite.... cela n'empêche pas de la dériver en de l'instancier via sa fille de même qu'avec les classes anonymes.

Le seul moyen pour faire en sorte d'être sur que jamais l'on ne créera d'instance , c'est de définir le constructeur par défaut de la classe en visibilité privée. ( et bien sur de ne pas en rajouter d'autres... :D )

Pour la classe Test cela donne ça :

public class Test{
// personne ne peut m'instancier en dehors d'ici
private Test(){}


/// mes méthodes statiques et autres.....
}

Si l'on ne définit pas de constructeur à la classe , le compilateur en rajoute un automatiquement.
C'est succin comme explication et tardif mais j'espère que cela vous aidera

Cordialement
21
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Yop,

exact. En java il te suffit de déclarer tes méthodes et tes attributs en statique. Pour les appeler d'une autre classe :
taClasse.taMethode()

++

Nico
Une classe abstraite non, puisqu'une telle classe est faite pour etre dérivée, ce qui n'est pas forcément (jamais?) le cas pour une classe ne contenant que des methodes et/ou des champs statiques/finaux.

Celle-ci doit etre "finale", elle ne doit pas etre instanciée. La seule solution alors est de déclarée un constructeur "private".
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
850
Bonjour,

Utiliser le mot 'final' pour une classe signifie que cette classe ne pourra jamais être étendue par la suite si un développeur souhaite le faire. En aucun cas cela signifie qu'elle ne pourra être instanciée.

Utiliser le mot 'static' pour une classe signifie que vous n'aurez pas besoin d'instancier cette classe pour accéder aux propriétés de classe. Attention à ne pas confondre propriétés / fonctions d'objet (relatif à l'instanciation) et propriétés / fonctions de classe (propriété statiques). Une classe statique par définition n'accepte aucun constructeur, elle ne peut / doit pas être instanciée.

Conclusion, si tu souhaites créer une classe avec des variables et méthodes statiques sans qu'elle puisse être instanciée, préfère le mot clé 'statique'. Attention toutefois, il me semble que pour le coup, toutes tes variables et fonction devront être déclarées avec le mot clé 'static', sinon ça ne colle pas.
Je n'ai jamais dit qu'une classe "finale" ne pouvait pas etre instanciée; bien au contraire puisque je propose alors comme solution de déclarer le contructeur par défaut "private" (relis bien ma dernière phrase). Cela associé au mot clef "final" sur la classe empêche toute instanciation, ce qui est indispensable pour une classe de constantes.

Il n'est pas possible, a ma connaissance, de déclarer en java une classe entière "static", a moins de la déclarer intra-classe, comme attribut, ce qui est différent (l'attribut est statique, pas le type de l'attribut). Non?

Si cela est possible, cette solution est alors ideale, puisque dédiée.

Dans tous les cas, la mienne est tout aussi valable, puisque, je le repetes, elle empeche toute instanciation par son contructeur 'private' et l'impossibilité d'en redéfinir un (constructeur) par le mot-clef "final"...
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
850
Oui exact, je n'avais pas lu ça sous ce sens, ça fonctionne également.
Et effectivement, un classe ne peut être déclarée statique que si elle est interne, donc en temps qu'attribut d'une autre classe.
Messages postés
3745
Date d'inscription
jeudi 22 avril 2004
Statut
Contributeur
Dernière intervention
17 décembre 2004
28
Bonjour ou Bonsoir,

D'apres mes souvenirs en java, je pense qu'il te suffit de faire des methodes statiques et de declarer tes attribut e statique pour que ca marche.

www.java.sun.com le site pour faire du java !

Il me semble que tu as certaine fonctionnalite statique dans la class COLOR A voir!!
recherche google idéale : java nomclass.java !

++

JSS
Messages postés
187
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
21 octobre 2005
32
Merci, c'est bien ce que je me disais.
Mais j'aurais trouvé plus simple de pouvoir déclarer une fois pour toute static sur la class sans devoir le faire sur chaques méthodes...



Plus ça rate, plus on a de chances que ça marche.
Par sécurité, tu peux faire une classe abstraite, c'est plus propre, personne ne pourra l'instancier. C'est un petit truc qui permet de montrer que c'est une classe qui n'existe que pour les fonctions qu'elle contient.