Statique Des Classes En Java
Est-il quelque chose comme static class
en java?
Quelle est la signification d'une telle classe. Faire toutes les méthodes de la classe statique doivent être static
trop?
Est-elle nécessaire à l'inverse, que si une classe contient toutes les méthodes statiques de la classe statique trop?
Quelles sont les classes statiques bon?
- Vous pourriez être intéressé par stackoverflow.com/questions/3584113/java-static-class
- Les classes statiques sont utilisés essentiellement pour le regroupement des classes d'ensemble.
Vous devez vous connecter pour publier un commentaire.
Java est statique imbriquée classes, mais il semble que vous êtes à la recherche d'un haut niveau statique de la classe. Java n'a aucun moyen de faire un top-niveau de la classe statique, mais vous pouvez simuler une classe statique comme ceci:
final
- Empêche l'extension de la classe depuis l'extension d'une classe statique n'a pas de sensprivate
- Empêche l'instanciation par code client comme il n'a pas de sens pour instancier une classe statiquestatic
- Depuis la classe ne peut pas être instancié en aucun cas, les méthodes peuvent être appelées ou des champs d'instance accessibleSimple exemple par des suggestions ci-dessus:
À quoi bon les classes statiques? Une bonne utilisation d'une classe statique est dans la définition de one-off, l'utilité et/ou de la bibliothèque de classes où l'instanciation n'aurait aucun sens. Un excellent exemple est la classe Math qui contient des constantes mathématiques telles que PI et E et fournit simplement des calculs mathématiques. Nécessitant l'instanciation dans un tel cas, serait inutile et source de confusion. Voir la
Math
classe et le code source. Remarquez que c'estfinal
et tous ses membres sont desstatic
. Si Java permis à des classes de niveau supérieur pour être déclaréstatic
puis la classe de Mathématiques serait en effet statique.Foo
avec seulementstatic
méthodes n'est pas le même questatic class Foo
Bien, Java a "statique classes imbriquées", mais ils ne sont pas du tout la même qu'en C#'s les classes statiques, si c'est où vous étiez en venir. Une statique de la classe imbriquée est juste un qui n'est pas implicitement une référence à une instance de l'extérieur de la classe.
Statique classes imbriquées peuvent avoir des méthodes d'instance et des méthodes statiques.
Il n'y a pas une telle chose comme un haut-niveau statique de la classe Java.
Outer.Innner nested = new Outer.Inner()
. Mais maintenant, est-il judicieux d'avoirnested.someInstanceMethod()
appel de la méthode du point de vue sémantique? Cet appel peut être légale et autorisée par la langue, mais quand je vois qu'une classe est déclaréestatic
je comprends que c'est une sorte de classe Utilitaire qui a été faite de haut niveau en raison de l'emballage de commodité. J'aimerais comprendre votre pensée sur ce point.static
en Java, ce qui veut dire à propos de cette classe? Faut-il dire qu'une instance de la classe peut se tenir sur son propre et n'a pas besoin de l'aide de l'enfermant instance de la classe à instancier lui-même?static
lors de la déclaration d'eux. Ils sont implicitement statique que vous n'avez pas besoin d'une référence à quelque chose d'autre dans le but de construire un. Personnellement, je trouve la statique/non-statique de la terminologie un peu bizarre pour les classes imbriquées de toute façon... je pense qu'il serait plus simple de parler de ce que le comportement est.Il est statique classe imbriquée, ce [statique imbriquée] de la classe n'a pas besoin d'une instance de la classe englobante afin d'être instancié lui-même.
Ces classes [statique imbriquée ceux] ne peuvent accéder qu'aux membres statiques de la classe englobante [puisqu'il n'a pas de référence à des instances de la classe englobante...]
exemple de code:
Oui, il y a une statique de la classe imbriquée dans java.
Lorsque vous déclarez une classe imbriquée statique, il devient automatiquement un stand alone de classe qui peut être instancié sans avoir à instancier l'extérieur de la classe à laquelle il appartient.
Exemple:
Parce que
class B
est déclarée statique vous pouvez instancier explicitement que:Remarque si
class B
n'était pas déclarée statique pour le rendre autonome, une instance d'appel de l'objet serait l'ai regardé comme ça:B b = new B();
si vous essayez de l'instanciation de la ClasseA
lui-même.Ce qui se passe quand un des membres à l'intérieur d'un
class
est déclarée commestatic
..? Que les membres peuvent être accessibles sans l'instanciation de laclass
. Donc pour l'extérieur de la classe(la classe de haut niveau)static
n'a pas de sens. Par conséquent, il n'est pas permis.Mais vous pouvez définir les classes internes static (Comme c'est un membre de la classe de haut niveau). Alors que la classe peut être consulté sans l'instanciation de la classe de haut niveau. Considérons l'exemple suivant.
Maintenant, à l'intérieur d'une autre classe
C
, classeB
peut être consulté sans en faire une instance de la classeA
.static
classes peuvent avoirnon-static
membres de trop. Seule la classe devient statique.Mais si le
static
mot-clé est retirée de la classeB
, il ne peut pas être accessible directement, sans en faire une instance deA
.Mais nous ne pouvons pas avoir
static
membres à l'intérieur d'unnon-static
intérieur de la classe.static
n'a qu'un seul sens dans le langage java. Si quelque chose eststatic
dans une classe qui signifie que les choses peuvent être accessibles sans l'instanciation de cette classe. Il ne dit rien concernant la création d'instances ou pas..Vu que c'est le premier résultat sur Google pour "statique de la classe java" et la meilleure réponse n'est pas ici, j'ai pensé que je voudrais ajouter. Je suis de l'interprétation des OP question concernant les classes statiques en C#, qui sont connus comme des singletons dans le monde Java. Pour ceux qui ne connaissent pas, en C# le mot-clé "statique peut être appliquée à une déclaration de classe, ce qui signifie que la classe résultante ne peut jamais être instancié.
Extrait de "Effective Java - Deuxième Édition" par Joshua Bloch (largement considéré comme l'un des meilleurs Java guides de style disponibles):
Bloch, Joshua (2008-05-08). Efficace Java (Série) (p. 18). Pearson Education.
Je pense que la mise en œuvre et la justification sont assez explicites.
Peut une classe statique en Java ?
La réponse est OUI, nous pouvons avoir la classe statique en java. En java, nous avons statique des variables d'instance ainsi que méthodes statiques et aussi statique bloc. Les Classes peuvent également être effectués statique en Java.
En java, on ne peut pas faire de Haut niveau (externe) de la classe statique. Seulement les classes imbriquées peuvent être statiques.
statique de la classe imbriquée vs non-statique de la classe imbriquée
1) Imbriquée statique de la classe n'a pas besoin de référence de l'Extérieur de la classe, mais
Non statique de la classe imbriquée ou à l'Intérieur de la classe nécessite l'Extérieur de la classe
de référence.
2) à l'Intérieur de la classe(ou de la non-statique de la classe imbriquée) peut accéder à la fois statique
et les membres non statiques de l'Extérieur de la classe. Une classe statique ne peut pas accéder
les membres non statiques de l'Extérieur de la classe. Il peut accéder seulement statique
les membres de l'Extérieur de la classe.
https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
Extérieur des classes ne peut pas être statique, mais imbriquées/classes internes peuvent être. Que, fondamentalement vous permet d'utiliser le imbriquée/intérieur de la classe sans la création d'une instance de l'extérieur de la classe.
En termes simples, Java prend en charge la déclaration d'une classe statique uniquement pour l'intérieur des classes, mais pas pour le haut niveau des classes.
haut niveau des classes: Un projet java peut contenir plus d'un haut niveau de classes dans chaque fichier source de java, l'une des classes étant nommé d'après le nom de fichier. Il y a seulement trois options ou des mots-clés autorisés en avant de la partie supérieure classes de niveau, public, abstraites et finales.
Les classes internes: classes qui sont à l'intérieur d'une classe de haut niveau sont appelés les classes internes, qui est fondamentalement la notion de classes imbriquées. Les classes internes peuvent être statiques. L'idée de faire les classes internes static, est de prendre l'avantage de l'instanciation des objets de classes internes sans l'instanciation de l'objet de la classe de haut niveau. C'est exactement de la même manière que les méthodes statiques et variables à l'intérieur d'une classe de haut niveau.
Donc Java prend en charge les Classes à l'Intérieur au Niveau de la Classe (dans les classes imbriquées)
Et Java Ne prend Pas en charge les Classes Statiques au plus Haut Niveau des Classes.
J'espère que cela vous donne une solution plus simple à la question de la compréhension de base de la statique des classes en Java.
Java a des méthodes statiques qui sont associés avec les classes (par exemple, java.lang.Math a que des méthodes statiques), mais la classe elle-même n'est pas statique.