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关键字,则会显示错误。实际上,我正在经历匿名的内部类概念,并被困在这里。需要帮助...。任何人都可以解释一下吗?
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
上面的代码不会抱怨编译错误。
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
11728 次 |
| 最近记录: |