Java consente di definire una classe all'interno di un'altra classe. Questi sono chiamati Classi nidificate . Le classi possono essere statiche di cui la maggior parte degli sviluppatori è a conoscenza, d'ora in poi alcune classi possono essere rese statiche in Java. Supporta Java Variabili di istanza statiche , Metodi statici , Blocco statico e classi statiche. La classe in cui è definita la classe nidificata è nota come Classe esterna . A differenza delle classi di livello superiore, Le classi nidificate possono essere statiche . Le classi nidificate non statiche sono anche conosciute come Classi interiori .
Nota: La classe di primo livello non può essere statica in Java, per creare una classe statica dobbiamo creare una classe nidificata e poi renderla statica.
Non è possibile creare un'istanza di una classe interna senza un'istanza della classe esterna. Pertanto, un'istanza della classe interna può accedere a tutti i membri della sua classe esterna, senza utilizzare un riferimento all'istanza della classe esterna. Per questo motivo, le classi interne possono aiutare a rendere i programmi semplici e concisi.
Ricordare: Nella classe statica, possiamo facilmente creare oggetti.
Differenze tra classi nidificate statiche e non statiche
Di seguito sono riportate le principali differenze tra le classi nidificate statiche e le classi interne.
- Una classe nidificata statica può essere istanziata senza istanziare la sua classe esterna.
- Le classi interne possono accedere sia ai membri statici che a quelli non statici della classe esterna. Una classe statica può accedere solo ai membri statici della classe esterna.
Esempio Di Classi nidificate statiche e non statiche
Di seguito è riportata l'implementazione dell'argomento sopra menzionato:
Giava
// Java program to Demonstrate How to> // Implement Static and Non-static Classes> // Class 1> // Helper class> class> OuterClass {> > // Input string> > private> static> String msg => 'GeeksForGeeks'> ;> > // Static nested class> > public> static> class> NestedStaticClass {> > // Only static members of Outer class> > // is directly accessible in nested> > // static class> > public> void> printMessage()> > {> > // Try making 'message' a non-static> > // variable, there will be compiler error> > System.out.println(> > 'Message from nested static class: '> + msg);> > }> > }> > // Non-static nested class -> > // also called Inner class> > public> class> InnerClass {> > // Both static and non-static members> > // of Outer class are accessible in> > // this Inner class> > public> void> display()> > {> > // Print statement whenever this method is> > // called> > System.out.println(> > 'Message from non-static nested class: '> > + msg);> > }> > }> }> // Class 2> // Main class> class> GFG {> > // Main driver method> > public> static> void> main(String args[])> > {> > // Creating instance of nested Static class> > // inside main() method> > OuterClass.NestedStaticClass printer> > => new> OuterClass.NestedStaticClass();> > // Calling non-static method of nested> > // static class> > printer.printMessage();> > // Note: In order to create instance of Inner class> > // we need an Outer class instance> > // Creating Outer class instance for creating> > // non-static nested class> > OuterClass outer => new> OuterClass();> > OuterClass.InnerClass inner> > = outer.> new> InnerClass();> > // Calling non-static method of Inner class> > inner.display();> > // We can also combine above steps in one> > // step to create instance of Inner class> > OuterClass.InnerClass innerObject> > => new> OuterClass().> new> InnerClass();> > // Similarly calling inner class defined method> > innerObject.display();> > }> }> |
>
qualcosa per i fidanzati
>Produzione
Message from nested static class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks>