logo

Classe statica in Java

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.



  1. Una classe nidificata statica può essere istanziata senza istanziare la sua classe esterna.
  2. 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>