Java 简明教程

Java - Static Classes

在 Java 中,静态类概念见于 inner classes 的概念,它专门设计用于 class 中一些精细功能。

Java Static Classes

Java 中的静态类仅允许在其他类下定义的内部类,因为不允许静态外部类,这意味着我们不能对外部类使用静态关键字。

静态类与 Java 中的其他内部类定义相同,只是在其名称前面有一个静态关键字。这些类有一些独特的特性,使它们与其他非静态内部类不同。

Features of Java Static Classes

以下是 Java 中静态类的一些特性:

  1. 静态类不需要创建外部包含类的实例即可创建自己的实例。

  2. 静态类只能访问外部包含类的成员(变量/方法),如果它们本质上是静态的。这意味着静态嵌套类不能访问外部类的实例变量和方法。

Syntax of Java Static Class

静态嵌套类的语法如下 −

class MyOuter {
   static class Nested_Demo {
   }
}

实例化静态嵌套类与实例化内部类有点不同。以下程序演示了如何在多种情况下使用静态嵌套类。

Example of Java Static Class

在这个示例中,我们创建了一个类 Outer 和一个内部静态类 NestedDemo。在 main() 方法中,我们直接使用静态类静态方法,而没有引用,因为 main 是 Outer 类的一部分。

package com.tutorialspoint;

public class Outer {
   static class NestedDemo {
      public static void print() {
         System.out.println("This is my nested class");
      }
   }

   public static void main(String args[]) {
      NestedDemo.print();
   }
}

如果您编译并执行上述程序,将得到以下结果 −

Output

This is my nested class

Java Static Class: More Examples

Example 1

在这个示例中,我们创建了一个类 Outer 和一个内部静态类 NestedDemo。由于 main 方法在不同的类中,我们使用 Outer 类访问静态内部类。

package com.tutorialspoint;

public class Tester {
   public static void main(String[] arguments) {
	   Outer.NestedDemo.print();
   }
}

class Outer {
   static class NestedDemo {
      public static void print() {
         System.out.println("This is my nested class");
      }
   }
}

如果您编译并执行上述程序,将得到以下结果 −

Output

This is my nested class

Example 2

在这个示例中,我们创建了一个类 Outer 和一个内部静态类 NestedDemo。现在,由于静态类具有实例方法,并且 main 方法在不同的类中,我们使用 Outer 类对象访问静态内部类。

package com.tutorialspoint;

public class Tester {
   public static void main(String[] arguments) {
	   new Outer.NestedDemo().print();
   }
}

class Outer {
   static class NestedDemo {
      public void print() {
         System.out.println("This is my nested class");
      }
   }
}

如果您编译并执行上述程序,将得到以下结果 −

Output

This is my nested class