logo

Статичний клас в Java

Java дозволяє визначити клас в іншому класі. Такі називаються Вкладені класи . Класи можуть бути статичними, про що відомо більшості розробників, тому деякі класи можна зробити статичними в Java. Підтримує Java Статичні змінні екземпляра , Статичні методи , Статичний блок , і статичні класи. Клас, у якому визначено вкладений клас, називається Зовнішній клас . На відміну від класів вищого рівня, Вкладені класи можуть бути статичними . Нестатичні вкладені класи також відомі як Внутрішні заняття .

Примітка: Клас верхнього рівня не може бути статичним у java, щоб створити статичний клас, ми повинні створити вкладений клас, а потім зробити його статичним.



Екземпляр внутрішнього класу неможливо створити без екземпляра зовнішнього класу. Тому екземпляр внутрішнього класу може отримати доступ до всіх членів свого зовнішнього класу без використання посилання на екземпляр зовнішнього класу. З цієї причини внутрішні класи можуть допомогти зробити програми простими та лаконічними.

Пам'ятайте: У статичному класі ми можемо легко створювати об’єкти.

Відмінності між статичними та нестатичними вкладеними класами

Нижче наведені основні відмінності між статичними вкладеними класами та внутрішніми класами.



  1. Статичний вкладений клас може бути створений без створення екземпляра його зовнішнього класу.
  2. Внутрішні класи можуть мати доступ як до статичних, так і до нестатичних членів зовнішнього класу. Статичний клас може отримати доступ лише до статичних членів зовнішнього класу.

приклад з Статичні та нестатичні вкладені класи

Нижче наведено реалізацію згаданої вище теми:

рядок у масиві c

Java






// 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();> >}> }>

>

>

Вихід

Message from nested static class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks>