当前位置: 首页 > 面试题库 >

为什么其他方法可以是“静态的”,而构造函数却不能?

羊舌承颜
2023-03-14
问题内容

我不明白为什么主要方法必须是静态的。我了解静态变量,但静态方法很难掌握。是否存在静态方法,以便人们可以在两个不会相互冲突的类中创建两个具有相同名称的方法?

另外,我不明白为什么我不能创建静态构造函数。

谁能帮助解释这个概念?


问题答案:

Java有 [静态构造函数] 静态初始化块,可以将其视为“静态构造函数”:

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();
   }
}

同样,static与“名称冲突”无关。静态方法(或可变的)仅仅是一个的方法(或可变的)
与一种类型的特定实例相关联。我建议您通读《类和对象Java教程》以及“
了解实例和类变量”部分。

快乐的编码。



 类似资料:
  • 好的,我正在使用gradle编译4个源集,一个是main,另外3个是反射加载的其他小段代码,这些代码基于稍后在“服务器”中可用的其他类。

  • 问题内容: 据我所知,一个唯一可以做的事和一个不能做的事就是打电话给。 由于我们尚未调用,因此in 会在进入第一遍之前准备状态对象。本质上是相同的: 但是我看到了另一个有用的用例(在服务器端)。 让我们考虑一些异步的东西: 在这里,我们不能使用as分配来不会触发。 怎么样的?根据React docs : 在挂载发生之前立即调用。在之前调用),因此在此方法中设置状态不会触发重新渲染。避免在此方法中引

  • 问题内容: 类允许客户获得实例的通常方法是提供一个公共构造器。另一种方法是提供一个公共的静态工厂方法,该方法只是一个返回类实例的静态方法。使用静态工厂方法的优缺点是什么? 问题答案: 《有效Java》一书中的这一章对此进行了很好的解释:考虑使用Static Factory而不是Constructors 。它以您可以理解的最佳方式说明了它们各自的优缺点。 只是引用本书的优点和缺点: 优点 : 静态工

  • 我知道在Java中,静态方法和实例方法一样是继承的,不同的是,当它们被重新声明时,父实现是隐藏的,而不是重写的。好吧,这有道理。但是,Java教程指出 接口中的静态方法从不继承。 然而,

  • 问题内容: 什么时候应该使用构造函数,什么时候应该使用静态方法? 您能用小片段解释一下吗?我略读了一些线程,但是我仍然不清楚。 问题答案: 当您只想返回该类型的新对象并且希望简单时,请使用公共构造函数。 一个很好的例子是StringBuilder,因为它是可变的,您可能每次都想要一个新对象。 当您可能想重用对象(尤其是不可变的对象),返回子类或描述结构时,请使用静态因子方法。一个很好的例子是Enu

  • 问题内容: 按照标准书,构造函数是用于初始化对象的一种特殊类型的函数。由于构造函数被定义为一个函数,并且内部类函数只能具有两种类型的静态或非静态类型。我怀疑是什么构造函数? 我的疑问是如果构造函数是静态方法,那么我们如何在构造函数内部频繁使用此方法 输出是否意味着构造函数是非静态的? 问题答案: 您的第二个例子很重要。引用在构造函数中可用,这意味着构造函数是针对某个对象(当前正在创建的对象)执行的