Java umožňuje definovat třídu v rámci jiné třídy. Tyto jsou tzv Vnořené třídy . Třídy mohou být statické, čehož si je většina vývojářů vědoma, od nynějška mohou být některé třídy statické v Javě. Java podporuje Proměnné statické instance , Statické metody , Statický blok a statické třídy. Třída, ve které je definována vnořená třída, se nazývá Vnější třída . Na rozdíl od tříd nejvyšší úrovně, Vnořené třídy mohou být statické . Nestatické vnořené třídy jsou také známé jako Vnitřní třídy .
Poznámka: Třída nejvyšší úrovně nemůže být v jazyce Java statická, pro vytvoření statické třídy musíme vytvořit vnořenou třídu a poté ji učinit statickou.
Instanci vnitřní třídy nelze vytvořit bez instance vnější třídy. Instance vnitřní třídy tedy může přistupovat ke všem členům své vnější třídy bez použití odkazu na instanci vnější třídy. Z tohoto důvodu mohou vnitřní třídy pomoci učinit programy jednoduchými a stručnými.
řetězec k chatu
Pamatovat si: Ve statické třídě můžeme snadno vytvářet objekty.
Rozdíly mezi statickými a nestatickými vnořenými třídami
Následují hlavní rozdíly mezi statickými vnořenými třídami a vnitřními třídami.
- Statická vnořená třída může být vytvořena bez vytvoření instance její vnější třídy.
- Vnitřní třídy mohou přistupovat ke statickým i nestatickým členům vnější třídy. Statická třída má přístup pouze ke statickým členům vnější třídy.
Příklad z Statické a nestatické vnořené třídy
Níže je implementace výše uvedeného tématu:
binární vyhledávání v Javě
Jáva
// 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();> > }> }> |
>
pole slicing java
>Výstup
Message from nested static class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks>