Quel est le but d'avoir plus d'une classe dans un fichier Java? Je suis nouveau sur Java.
Modifié: Cela peut être réalisé en créant une classe interne dans une classe publique, non?
Quel est le but d'avoir plus d'une classe dans un fichier Java? Je suis nouveau sur Java.
Modifié: Cela peut être réalisé en créant une classe interne dans une classe publique, non?
Réponses:
Oui il peut. Cependant, il ne peut y avoir qu'une seule classe publique de niveau supérieur par .java
fichier et les classes publiques de niveau supérieur doivent avoir le même nom que le fichier source.
Le but d'inclure plusieurs classes dans un fichier source est de regrouper les fonctionnalités de support associées (structures de données internes, classes de support, etc.) avec la classe publique principale. Notez qu'il est toujours acceptable de ne pas le faire - le seul effet est sur la lisibilité (ou non) de votre code.
java.awt.LightweightDispatcher
?
Si vous souhaitez implémenter une classe publique, vous devez l'implémenter dans un fichier portant le même nom que cette classe. Un seul fichier peut contenir une classe publique et éventuellement des classes privées. Ceci est utile si les classes ne sont utilisées qu'en interne par la classe publique. De plus, la classe publique peut également contenir des classes internes.
Bien qu'il soit bien d'avoir une ou plusieurs classes privées dans un seul fichier source, je dirais qu'il est plus lisible d'utiliser des classes internes et anonymes à la place. Par exemple, on peut utiliser une classe anonyme pour définir une classe Comparator à l'intérieur d'une classe publique:
public static Comparator MyComparator = new Comparator() {
public int compare(Object obj, Object anotherObj) {
}
};
La classe Comparator nécessitera normalement un fichier séparé pour être publique. De cette façon, il est livré avec la classe qui l'utilise.
Un fichier .java est appelé une unité de compilation. Chaque unité de compilation peut contenir n'importe quel nombre de classes et d'interfaces de niveau supérieur. S'il n'y a pas de types publics de niveau supérieur, l'unité de compilation peut être nommée n'importe quoi.
//Multiple.java
//preceding package and import statements
class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...
Il ne peut y avoir qu'une seule classe / interface publique dans une unité de compilation. Le cu doit être nommé exactement comme ce type public de niveau supérieur.
//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
Points importants sur la méthode principale - partie 1
(Points concernant le nombre de classes et leurs niveaux d'accès couverts dans la partie 2)
Outre les classes internes anonymes, une autre utilisation est les classes internes privées qui implémentent une interface publique ( voir cet article ). La classe externe peut accéder à tous les champs et méthodes privés de la classe interne.
Cela vous permet de créer deux classes étroitement couplées, telles qu'un modèle et sa vue, sans exposer les implémentations de l'un ou l'autre. Un autre exemple est une collection et ses itérateurs.
En général, il devrait y avoir une classe par fichier. Si vous organisez les choses de cette façon, lorsque vous recherchez une classe, vous savez que vous devez uniquement rechercher le fichier portant ce nom.
L'exception est lorsqu'une classe est mieux implémentée en utilisant une ou plusieurs petites classes d'assistance. En général, le code est le plus simple à suivre lorsque ces classes sont présentes dans le même fichier. Par exemple, vous pourriez avoir besoin d'une petite classe wrapper «tuple» pour transmettre des données entre les appels de méthode. Un autre exemple est celui des classes «tâche» implémentant Runnable ou Callable. Ils peuvent être si petits qu'ils sont mieux combinés avec la classe parent qui les crée et les appelle.
Oui 200% ,
Exemple:
class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}
Oui, c'est possible, mais il ne peut y avoir qu'une seule classe publique dans un package car le compilateur java crée le fichier .Class qui porte le même nom que le nom de la classe publique, donc s'il y a plus d'une classe publique, il serait difficile de sélectionner compilateur que quel devrait être le nom du fichier de classe.
Varie ... Un tel exemple serait une classe anonyme (vous en rencontrerez beaucoup lors de l'utilisation d'écouteurs d'événements et autres).
Je pense que cela devrait être "il ne peut y avoir qu'une seule classe publique de niveau supérieur NON-STATIQUE par fichier .java". N'est-ce pas?
Si vous souhaitez implémenter un singleton, c'est-à-dire une classe qui s'exécute dans votre programme avec une seule instance en mémoire tout au long de l'exécution de l'application, l'un des moyens d'implémenter un singleton est d'imbriquer une classe statique privée dans une classe publique . Ensuite, la classe privée interne ne s'instancie que lorsque sa méthode publique pour accéder à l'instance privée est appelée.
Consultez cet article du wiki,
https://en.wikipedia.org/wiki/Singleton_pattern
Le concept prend du temps à se développer.
Dans un fichier .java, il ne peut y avoir qu'une seule classe publique de premier niveau dont le nom est le même que le fichier, mais il peut y avoir plusieurs classes internes publiques qui peuvent être exportées vers tout le monde et accéder aux champs / méthodes de la classe externe, par exemple : AlertDialog.Builder (modifié par 'public static') dans AlertDialog (modifié par 'public')
Oui Vous pouvez avoir plus d'une classe dans un fichier .Java. Mais vous devez rendre l'un d'eux public. et enregistrez le fichier .java avec le même nom que le nom de la classe publique. lorsque vous compilerez ce fichier .java, vous obtiendrez des fichiers .class séparés pour chaque classe définie dans le fichier .java.
En dehors de cela, il y a trop de méthodes pour définir plus d'une classe dans un fichier .java.
Oui ! Le fichier .java ne peut contenir qu'une seule classe publique.
Si vous voulez que ces deux classes soient publiques, elles doivent être placées dans deux fichiers .java: A.java et B.java.
Oui, vous pouvez avoir plus d'une classe dans un fichier .java. Au plus l'un d'entre eux peut être public. Les autres sont des packages privés. Ils NE PEUVENT PAS être privés ou protégés. Si l'un d'entre eux est public, le fichier doit porter le nom de cette classe. Sinon, TOUT peut être donné à ce fichier comme nom.
Avoir plusieurs classes dans un fichier signifie que ces classes sont dans le même package. Ainsi, toutes les autres classes qui se trouvent à l'intérieur de ce package mais pas dans ce fichier peuvent également utiliser ces classes. De plus, lorsque ce package est importé, la classe d'importation peut également les utiliser.
Pour une enquête plus détaillée, vous pouvez visiter mon article de blog ici .
Il ne peut y avoir qu'une seule classe de premier niveau de classe publique dans un fichier. Le nom de classe de cette classe publique doit être le nom du fichier. Il peut avoir de nombreuses classes internes publiques.
Vous pouvez avoir plusieurs classes dans un seul fichier. Les limites des différents niveaux de visibilité de classe dans un fichier sont les suivantes:
Classes de niveau supérieur:
1 classe publique
0 classe privée
n'importe quel nombre de classes par défaut / protégées
Classes
internes : n'importe quel nombre de classes internes avec n'importe quelle visibilité (par défaut, privée, protégée, publique)
S'il vous plait corrigez moi si je me trompe.
Oui il peut. Cependant, il ne peut y avoir qu'une seule classe publique par fichier .java, car les classes publiques doivent avoir le même nom que le fichier source.