2017-05-15 1 views
0

Est-ce une bonne pratique de rendre toutes les méthodes dans une classe statique si la classe n'a aucun membre de classe non statique? Comme certaines sortes de gestionnaires qui n'ont pas de variables d'instance qui leur sont propres.devez-vous rendre la classe statique si aucun membre de classe non statique?

+0

En fait, je dirais qu'il est préférable de ne pas rendre toutes les méthodes d'une telle classe statique. Mais je pense que c'est une question d'opinion. Je ne serais pas trop surpris si quelqu'un prétend le contraire. –

+1

Notez que les méthodes statiques ne peuvent pas implémenter des interfaces. Vous pouvez vouloir que votre classe implémente une interface, même si elle manque de champs d'instance. –

+1

@Andy bon point. c'est-à-dire l'interface java.lang.Runnable https://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html afin que les instances puissent être exécutées sur un thread. – Dachstein

Répondre

0

Si la classe ne va jamais avoir d'instance, toutes les méthodes devraient être statiques, ce serait la seule façon de les appeler (vous ne pouvez pas faire myInst.myFunc() car myInst ne peut pas exister).

Cela peut être utile: Static Classes In Java

L'exemple Math est bonne, il serait source de confusion d'avoir à faire

Math myCalculator = new Math() 
myCalculator.multiply(x,y); 

moins myCalculator pourrait avoir une définition différente de PI, E, etc. .

donc en bref, oui, une classe qui n'a pas de membres non statiques devraient avoir rien d'autre que des méthodes statiques

Modifier: Andy Thomas a fait un bon point

Votre Math pourrait implémenter l'interface Multiplies, car il peut multiplier deux choses. Dans le même temps, ma classe MultiplierAndAdder (je sais que c'est une classe terrible, mais pour l'exemple) implémente également Multiplies. Dans ce cas, les méthodes DOIVENT être non statiques et vous devez instancier une instance pour la transmettre à tout utilisateur qui l'utilisera.

La logique d'interface a toujours été dans mon esprit (comme enseigné par un prof): cheville carrée, trou rond. Si vous voulez passer à travers le trou rond, vous devez être rond. Si vous n'existez pas, vous n'êtes pas rond et vous ne pouvez pas traverser le trou.