Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Вложенный статический класс Java

Вложенный статический класс Java

В этом уроке вы узнаете о вложенном статическом классе с помощью примеров. Вы также узнаете, чем статические классы отличаются от внутренних классов.

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

Мы уже обсуждали внутренние классы в предыдущем уроке. Посетите вложенный класс Java, если хотите узнать о внутренних классах.

В этом руководстве мы узнаем о вложенных статических классах.

<час>

Вложенный статический класс Java

Мы используем ключевое слово static чтобы сделать наш вложенный класс статическим.

Примечание. В Java статическими могут быть только вложенные классы.

Как и обычные классы, статические вложенные классы могут включать как статические, так и нестатические поля и методы. Например,

Class Animal {
   static class Mammal {
      // static and non-static members of Mammal
   }
   // members of Animal
} 

Статические вложенные классы связаны с внешним классом.

Для доступа к статическому вложенному классу нам не нужны объекты внешнего класса.

<час>

Пример:статический вложенный класс

class Animal {

// inner class
   class Reptile {
      public void displayInfo() {
        System.out.println("I am a reptile.");
      }
   }

// static class
   static class Mammal {
      public void displayInfo() {
        System.out.println("I am a mammal.");
      }
   }
}

class Main {
   public static void main(String[] args) {
      // object creation of the outer class
      Animal animal = new Animal();

      // object creation of the non-static class
      Animal.Reptile reptile = animal.new Reptile();
      reptile.displayInfo();

      // object creation of the static nested class
      Animal.Mammal mammal = new Animal.Mammal();
      mammal.displayInfo();

   }
}

Вывод

I am a reptile.
I am a mammal.

В приведенной выше программе у нас есть два вложенных класса Mammal. и Рептилия внутри класса Animal .

Для создания объекта нестатического класса Reptile мы использовали

Animal.Reptile reptile = animal.new Reptile()

Чтобы создать объект статического класса Mammal , мы использовали

Animal.Mammal mammal = new Animal.Mammal()
<час>

Доступ к членам внешнего класса

В Java статические вложенные классы связаны с внешним классом. Вот почему статические вложенные классы могут обращаться только к членам класса (статическим полям и методам) внешнего класса.

Давайте посмотрим, что произойдет, если мы попытаемся получить доступ к нестатическим полям и методам внешнего класса.

Пример:доступ к нестатическим членам

class Animal {
  static class Mammal {
   public void displayInfo() {
     System.out.println("I am a mammal.");
   }
 }

 class Reptile {
   public void displayInfo() {
     System.out.println("I am a reptile.");
   }
 }

 public void eat() {
   System.out.println("I eat food.");
 }
}

class Main {
 public static void main(String[] args) {
   Animal animal = new Animal();
   Animal.Reptile reptile = animal.new Reptile();
   reptile.displayInfo();

   Animal.Mammal mammal = new Animal.Mammal();
   mammal.displayInfo();
   mammal.eat();
 }
}

Вывод

Main.java:28: error: cannot find symbol
    mammal.eat();
          ^
  symbol:   method eat()
  location: variable mammal of type Mammal
1 error
compiler exit status 1

В приведенном выше примере мы создали нестатический метод eat(). внутри класса Animal .

Теперь, если мы попытаемся получить доступ к eat() используя объект млекопитающее , компилятор выдает ошибку.

Это потому, что млекопитающее является объектом статического класса, и мы не можем получить доступ к нестатическим методам из статических классов.

<час>

Статический класс верхнего уровня

Как упоминалось выше, статическими могут быть только вложенные классы. У нас не может быть статических классов верхнего уровня.

Давайте посмотрим, что произойдет, если мы попытаемся сделать класс верхнего уровня статическим.

static class Animal {
 public static void displayInfo() {
   System.out.println("I am an animal");
 }
}

class Main {
 public static void main(String[] args) {
   Animal.displayInfo();
 }
}

Вывод

Main.java:1: error: modifier static not allowed here
static class Animal {
       ^
1 error
compiler exit status 1

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


java

  1. C# статическое ключевое слово
  2. Вложенный класс С#
  3. Окончательное ключевое слово Java
  4. Оператор экземпляра Java
  5. Вложенный и внутренний класс Java
  6. Анонимный класс Java
  7. Одноэлементный класс Java
  8. Java-отражение
  9. Класс Java ObjectOutputStream
  10. Дженерики Java