初學者常遇到編譯錯誤:「The method main cannot be declared static; static methods can only be declared in a static or top level type」。這段代碼完美示範了問題根源:
public class MainClass {
class Box { ... }
class BoxDemo {
public static void main(String[] args) { // 錯誤位置
Box myBox = new Box();
...
}
}
}
BoxDemo 是 MainClass 的**非靜態內部類**(內部類)。非靜態內部類隱式持有外部類實例引用,因此不能定義靜態方法(包括 main)。只有頂層類或 static 修飾的靜態內部類才能包含 static 成員。
public class MainClass { public static void main(String[] args) { ... } }static class BoxDemo { public static void main(String[] args) { ... } }main 必須是靜態的,此法不可行。Java 類名應遵循 PascalCase(首字母大寫),如 MainClass、BoxDemo,而非 main_class、boxdome。