如何在 Java 中创建静态类对象而不引用外部类?

java 8object oriented programmingprogramming更新于 2025/4/26 18:37:17

静态成员(方法/变量)属于类,它将与类一起加载到内存中。您可以在不创建对象的情况下调用它。(使用类名作为引用)。整个类中只有一个静态字段副本可用,即静态字段的值在所有对象中都是相同的。您可以使用 static 关键字定义静态字段。

示例

public class Sample{
   static int num = 50;
   public static void demo(){
      System.out.println("Value of num in the demo method "+ Sample.num);
   }
}
public class Demo{
   public static void main(String args[]){
      System.out.println("Value of num in the main method "+ Sample.num);
      Sample.demo();
   }
}

输出

Value of num in the main method 50
Value of num in the demo method 50

引用同一个类中的静态成员

如果想在类本身中(在同一个类中)引用该类的静态成员,则无需引用该类,可以直接访问静态成员。

示例

public class Sample{
   static int num = 50;
   public static void demo(){
      System.out.println("Value of num in the demo method "+ Sample.num);
   }
   public static void main(String args[]){
      demo();
      System.out.println(num);
   }
}

输出

Value of num in the demo method 50

内部类

在 Java 中,类内可以有类,它们被称为内部类。

语法

public class Outer{
   public class Inner{
   }
}

当另一个类中有类时,它只是充当外部类的实例成员。因此,如果您将内部类声明为静态,则可以使用它的名称作为 − 来访问它(内部类)的成员

outer_class_name.inner_class_name.members

示例

class OuterDemo {
   static int data = 200;
   static class InnerDemo {
      public static void my_method() {
         System.out.println("This is my nested class");
         System.out.println(OuterDemo.data);
      }
   }
}
public class StaticClassExample{
   public static void main(String args[]) {
      System.out.println(OuterDemo.data);
      //Outer.InnerDemo nested = new Outer.InnerDemo();
      OuterDemo.InnerDemo.my_method();
   }
}

输出

200
This is my nested class
200

如果您尝试引用静态内部类的(静态)成员,则无需使用外部类名称,您只需使用内部类名称(仅)引用该成员即可。

示例

class OuterDemo {
   static int data = 200;
   static class InnerDemo {
      public static void my_method() {
         System.out.println("This is my nested class");
         System.out.println(OuterDemo.data);
      }
   }
   public static void main(String args[]) {
      System.out.println(data);
      InnerDemo.my_method();
   }
}

输出

200
This is my nested class
200

相关文章