我不明白为什么 main 方法必须是静态的。我了解静态变量,但静态方法对我来说很难掌握。是否存在静态方法,以便可以在两个不同的类中创建两个不会相互冲突的同名方法?
另外,我不明白为什么我不能创建静态构造函数。
谁能帮忙解释一下这个概念?
最佳答案
Java 有 [静态构造函数] static initialization blocks可以看作是“静态构造函数”:
class Foo {
static String Bar;
static {
// "static constructor"
Bar = "Hello world!";
}
}
在任何情况下,主类中唯一必须是静态的方法是main
方法。这是因为调用它没有首先创建“主类”的实例。一种常见的技术,也是我更喜欢的技术,是快速摆脱静态上下文:
class Main {
int argCount;
// constructor
public Main (String[] args) {
// and back to boring ol' non-static Java
argCount = args.length;
}
void runIt () {
System.out.println("arg count: " + argCount);
}
// must be static -- no Main instance created yet
public static void main (String[] args) {
Main me = new Main(args);
me.runIt();
}
}
此外,静态与“名称冲突”无关。静态方法(或变量)只是一个不与特定类型实例相关联的方法(或变量)。我建议通读 Classes and Objects Java Tutorial和部分Understanding Instance and Class Variables .
编码愉快。
关于java - 为什么其他方法可以是 "static"而构造函数不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7780406/