java - 为什么其他方法可以是 "static"而构造函数不能?

标签 java static constructor

我不明白为什么 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/

相关文章:

java - 在 Struts2 Web 应用程序中不断收到 The Struts Dispatcher Cancel 错误

c++ - 如果私有(private)变量是静态的,它们在类外部是否可见?

C++ 创建 2 参数构造函数

c++ - BigNum 类字符串构造函数错误

java - 库中的 generateReleaseBuildConfig 错误

java - Hibernate:如何配置通过Oracle包过程插入/更新/删除实体?

java - 更新 TabLayout 中的 TextView 导致 NullPointerException

iphone - "WARNING: Input manager failed to load static dictionary for: nl_NL"是什么意思?

C++ : Initializing base class constant static variable with different value in derived class?

python - Python 对象的唯一表示