Рубрики

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

Может ли класс быть статическим в Java?
Ответ ДА, у нас может быть статический класс в Java. В Java у нас есть статические переменные экземпляра, а также статические методы, а также статический блок . Классы также можно сделать статическими в Java.

Java позволяет нам определять класс в другом классе. Такой класс называется вложенным классом. Класс, который включает вложенный класс, известен как Outer class. В Java мы не можем сделать класс верхнего уровня статичным. Только вложенные классы могут быть статическими .

Каковы различия между статическими и нестатическими вложенными классами?
Ниже приведены основные различия между статическим вложенным классом и нестатическим вложенным классом. Нестатический вложенный класс также называется Inner Class.

1) Вложенный статический класс не нуждается в ссылке на внешний класс, но нестатический вложенный класс или внутренний класс требует ссылки на внешний класс.

2) Внутренний класс (или нестатический вложенный класс) может обращаться как к статическим, так и к нестатическим членам класса Outer. Статический класс не может получить доступ к нестатическим членам класса Outer. Он может получить доступ только к статическим членам класса Outer.

3) Экземпляр класса Inner не может быть создан без экземпляра внешнего класса, и класс Inner может ссылаться на данные и методы, определенные в классе Outer, в который он вложен, поэтому нам не нужно передавать ссылку на объект в конструктор Внутренний класс. По этой причине внутренние классы могут сделать программу простой и лаконичной.

/ * Java-программа, демонстрирующая, как реализовать статический и нестатический

   занятия в Java-программе. * /

class OuterClass{

   private static String msg = "GeeksForGeeks";

     

   // Статический вложенный класс

   public static class NestedStaticClass{

       

       // Только статические члены класса Outer напрямую доступны во вложенных

       // статический класс

       public void printMessage() {

  

         // Попробуйте сделать 'message' нестатической переменной, там будет

         // ошибка компилятора

         System.out.println("Message from nested static class: " + msg); 

       }

    }

     

    // нестатический вложенный класс - также называется Inner class

    public class InnerClass{

         

       // Как статические, так и нестатические члены класса Outer доступны в

       // этот внутренний класс

       public void display(){

          System.out.println("Message from non-static nested class: "+ msg);

       }

    }

class Main

{

    // Как создать экземпляр статического и нестатического вложенного класса?

    public static void main(String args[]){

         

       // создаем экземпляр вложенного статического класса

       OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass();

         

       // вызов нестатического метода вложенного статического класса

       printer.printMessage();   

   

       // Для создания экземпляра класса Inner нам нужен класс Outer

       // экземпляр. Давайте создадим экземпляр класса Outer для создания

       // нестатический вложенный класс

       OuterClass outer = new OuterClass();        

       OuterClass.InnerClass inner  = outer.new InnerClass();

         

       // вызов нестатического метода внутреннего класса

       inner.display();

         

       // мы также можем объединить вышеуказанные шаги за один шаг, чтобы создать экземпляр

       // Внутренний класс

       OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();

         

       // аналогично теперь мы можем вызвать метод класса Inner

       innerObject.display();

    }

}

Выход:

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

Справочник:
Введение в программирование на Java от Y. DANIEL LIANG

Эта статья предоставлена Чандрой Пракаш . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

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

0.00 (0%) 0 votes