Qual è lo scopo di avere più di una classe in un file Java? Sono nuovo in Java.
Modificato: Ciò può essere ottenuto creando una classe interna all'interno di una classe pubblica, giusto?
Qual è lo scopo di avere più di una classe in un file Java? Sono nuovo in Java.
Modificato: Ciò può essere ottenuto creando una classe interna all'interno di una classe pubblica, giusto?
Risposte:
Sì, può. Tuttavia, può essere presente una sola classe pubblica di primo livello per .java
file e le classi pubbliche di primo livello devono avere lo stesso nome del file di origine.
Lo scopo dell'inclusione di più classi in un file sorgente è di raggruppare le funzionalità di supporto correlate (strutture dati interne, classi di supporto, ecc.) Insieme alla classe pubblica principale. Nota che è sempre OK non farlo: l'unico effetto è sulla leggibilità (o meno) del tuo codice.
java.awt.LightweightDispatcher
?
Se vuoi implementare una classe pubblica, devi implementarla in un file con lo stesso nome di quella classe. Un singolo file può contenere una classe pubblica e opzionalmente alcune classi private. Ciò è utile se le classi vengono utilizzate solo internamente dalla classe pubblica. Inoltre, la classe pubblica può contenere anche classi interne.
Anche se va bene avere una o più classi private in un unico file sorgente, direi che è più leggibile usare invece classi interne e anonime. Ad esempio si può usare una classe anonima per definire una classe Comparator all'interno di una classe pubblica:
public static Comparator MyComparator = new Comparator() {
public int compare(Object obj, Object anotherObj) {
}
};
La classe Comparator richiede normalmente un file separato per essere pubblica. In questo modo viene fornito in bundle con la classe che lo utilizza.
Un file .java è chiamato unità di compilazione. Ogni unità di compilazione può contenere un numero qualsiasi di classi e interfacce di primo livello. Se non sono presenti tipi pubblici di primo livello, l'unità di compilazione può essere denominata in qualsiasi modo.
//Multiple.java
//preceding package and import statements
class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...
Può esserci solo una classe / interfaccia pubblica in un'unità di compilazione. Il cu deve essere denominato esattamente come questo tipo pubblico di primo livello.
//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
Punti importanti sul metodo principale - parte 1
(Punti relativi al numero di classi e ai loro livelli di accesso trattati nella parte 2)
Oltre alle classi interne anonime, un altro uso sono le classi interne private che implementano un'interfaccia pubblica ( vedere questo articolo ). La classe esterna può accedere a tutti i campi e metodi privati della classe interna.
Ciò consente di creare due classi strettamente collegate, come un modello e la relativa vista, senza esporre le implementazioni di nessuna delle due. Un altro esempio è una raccolta e i suoi iteratori.
In generale, dovrebbe esserci una classe per file. Se organizzi le cose in questo modo, quando cerchi una classe, sai che devi solo cercare il file con quel nome.
L'eccezione è quando una classe viene implementata al meglio utilizzando una o più classi di supporto piccole. Di solito, il codice è più semplice da seguire quando quelle classi sono presenti nello stesso file. Ad esempio, potresti aver bisogno di una piccola classe wrapper "tupla" per passare alcuni dati tra le chiamate di metodo. Un altro esempio sono le classi "task" che implementano Runnable o Callable. Possono essere così piccoli da essere combinati al meglio con la classe genitore che li crea e li chiama.
Sì 200% ,
Esempio:
class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}
Sì, può, ma può esserci solo 1 classe pubblica all'interno di qualsiasi pacchetto poiché il compilatore java crea il file .Class che ha lo stesso nome del nome della classe pubblica, quindi se sono più di 1 classe pubblica sarebbe difficile selezionarla compilatore che dovrebbe essere il nome del file Class.
Varia ... Uno di questi esempi potrebbe essere una classe anonima (ne incontrerai molte quando usi i listener di eventi e simili).
Penso che dovrebbe essere "ci può essere solo una classe pubblica di primo livello NON STATICO per file .java". Non è vero?
Se vuoi implementare un singleton, ovvero una classe che viene eseguita nel tuo programma con una sola istanza in memoria durante l'esecuzione dell'applicazione, allora uno dei modi per implementare un singleton è annidare una classe statica privata all'interno di una classe pubblica . Quindi la classe privata interna crea un'istanza solo quando viene chiamato il suo metodo pubblico per accedere all'istanza privata.
Dai un'occhiata a questo articolo wiki,
https://en.wikipedia.org/wiki/Singleton_pattern
Il concetto richiede un po 'di tempo per masticare.
In un file .java, può esserci solo una classe pubblica di primo livello il cui nome è lo stesso del file, ma potrebbero esserci diverse classi interne pubbliche che possono essere esportate a tutti e accedere ai campi / metodi della classe esterna, ad esempio : AlertDialog.Builder (modificato da 'public static') in AlertDialog (modificato da 'public')
Sì Puoi avere più di una Classe in un file .Java. Ma ne hai reso pubblico uno. e salva il file .java con lo stesso nome del nome della classe pubblica. quando compilerai quel file .java, otterrai file .class separati per ogni classe definita nel file .java.
Oltre a questo ci sono troppi metodi per definire più di una classe in un file .java.
Sì ! Il file .java può contenere solo una classe pubblica.
Se vuoi che queste due classi siano pubbliche, devono essere inserite in due file .java: A.java e B.java.
Sì, puoi avere più di una classe all'interno di un file .java. Al massimo uno di loro può essere pubblico. Gli altri sono privati del pacchetto. NON POSSONO essere privati o protetti. Se uno è pubblico, il file deve avere il nome di quella classe. Altrimenti QUALCHE COSA può essere data a quel file come nome.
Avere molte classi all'interno di un file significa che quelle classi sono nello stesso pacchetto. Quindi anche qualsiasi altra classe che si trova all'interno di quel pacchetto ma non in quel file può usare quelle classi. Inoltre, quando quel pacchetto viene importato, anche la classe di importazione può utilizzarli.
Per un'indagine più dettagliata, puoi visitare il mio post sul blog qui .
In un file può essere presente una sola classe pubblica di primo livello . Il nome della classe di quella classe pubblica dovrebbe essere il nome del file. Può avere molte classi interne pubbliche.
Puoi avere molte classi in un unico file. I limiti per i vari livelli di visibilità della classe in un file sono i seguenti:
Classi di primo livello:
1 classe pubblica
0 classe privata
qualsiasi numero di classi predefinite / protette
Classi interne:
qualsiasi numero di classi interne con qualsiasi visibilità (predefinita, privata, protetta, pubblica)
Perfavore, correggimi se sbaglio.
Sì, può. Tuttavia, può esserci solo una classe pubblica per file .java, poiché le classi pubbliche devono avere lo stesso nome del file di origine.