用Java创建静态对象的目的是什么?

Aja*_*tan 3 java

class Demo {
   void show() {
      System.out.println("i am in show method of super class");
   }
}
class Flavor1Demo {

   //  An anonymous class with Demo as base class
   static Demo d = new Demo() {
       void show() {
           super.show();
           System.out.println("i am in Flavor1Demo class");
       }
   };
   public static void main(String[] args){
       d.show();
   }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我不了解在其前面带有static关键字的Demo类的创建对象d的用法。如果我消除了static关键字,则会显示错误。实际上,我正在经历匿名的内部类概念,并被困在这里。需要帮助...。任何人都可以解释一下吗?

Sou*_*tha 7

Java中的static关键字表示该类的所有实例之间共享变量或函数,而不是实际对象本身。

在您的情况下,您尝试通过一种static方法访问资源,

public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)

因此,我们在此处创建而不访问类实例的任何内容都Flavor1Demo必须是static资源。

如果static要从Demo类中删除关键字,则代码应如下所示:

class Flavor1Demo {

// An anonymous class with Demo as base class
Demo d = new Demo() {
    void show() {
        super.show();
        System.out.println("i am in Flavor1Demo class");
    }
};

public static void main(String[] args) {

    Flavor1Demo flavor1Demo =  new Flavor1Demo();
    flavor1Demo.d.show();
}
}
Run Code Online (Sandbox Code Playgroud)

在这里您会看到,我们创建了的实例,Flavor1Demo然后获取了non-static资源d 上面的代码不会抱怨编译错误。

希望能帮助到你!