关于Java中构造函数的问题

时间:2011-01-13 04:17:33

标签: java constructor

关于Java构造函数我几乎没有问题

  1. 构造函数可以是私有的吗?如果是,那么在哪种情况下?
  2. 构造函数是否为方法?
  3. 如果构造函数没有返回任何内容,那么为什么每次调用它时都会得到一个新的Object?
  4. 如果我们不指定,那么构造函数的默认访问修饰符是什么。
  5. 修改

    1&的答案3非常清楚。我还不确定2&因为我得到了不同的答案。

8 个答案:

答案 0 :(得分:3)

  

构造函数可以是私有的吗?如果是,那么在哪种情况下?

是。没有条件。当然,除了班级本身之外没有人可以称之为。

这实际上是一种常见模式:拥有static getInstance()并保持构造函数为私有。

公共构造函数也可以在内部调用私有构造函数。

  

构造函数是否是一种方法?

嗯。我拒绝”。至少,它是一种“非常特殊的”方法。在什么情况下呢?术语不如您尝试的那么重要。

  

如果构造函数没有返回任何内容,那么为什么每次调用它时都会得到一个新的Object。

new运算符返回一些内容(新实例)。

  

什么是构造函数的默认访问修饰符。

与方法相同。包专用。

如果你没有指定任何构造函数,那么该类将获得一个默认构造函数,它不带任何参数,除了调用父构造函数之外什么都不做,并且是公共的。

答案 1 :(得分:2)

  1. 是的,无论如何。但是,如果类的所有构造函数都是私有的,则意味着无法直接实例化该类。您需要使用Factory Pattern之类的东西来创建对象的实例。
  2. 是的,构造函数是一种方法。
  3. 更好的思考方式是new运算符返回对象,并在创建对象的过程中调用构造函数。考虑它的另一种方式(虽然这只是一种思考它的方法,但从技术上来说并不正确)只是返回类型是由惯例隐含的。阅读更多相关信息的好地方是阅读context of C++中的new。构造函数的作用不是创建对象,而是初始化对象中包含的内存。
  4. Java中构造函数的默认访问权限就像其他任何方法一样。 (一个这样的来源:http://www.javabeginner.com/learn-java/introduction-to-java-access-modifiers来自马的嘴:http://download.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

答案 2 :(得分:1)

  1. 是的,构造函数可以是私有的。当您希望对实例创建进行更严格或替代控制时(例如使用工厂方法或使用Singleton等模式),即可完成此操作。
  2. 这是一种方法但不直接调用。这是一种在创建新对象时代表您调用的特殊类型的方法。
  3. 构造函数不返回任何内容,它们会创建新对象。
  4. 默认为package private。因此对包中的任何类都公开,但对包外的代码不可见。
  5. 关于Tomcat性能和可伸缩性的思考:这是一个高度可变的情况,基于您的服务器硬件和请求类型,当然还有服务于每个请求的代码的质量,效率和内存占用。< / p>

    并发请求的下限是500.考虑到你可能想为每个请求创建一个线程,并为每个线程提供1MB堆栈.5 GB仅用于线程堆栈空间。这是在堆内存和分配那么多线程的性能开销之前。我认为如果需要一次处理那么多请求,你可能需要考虑像JBoss这样的更重型服务器。

答案 3 :(得分:0)

  • 可以将构造函数声明为任何类的私有。
  • 构造函数是一种特殊的方法,它返回它所属的类的实例,因此您不需要指定构造函数的返回类型。
  • 包私有是正确答案,如下所述。

答案 4 :(得分:0)

  1. 是 - 工厂实例单例经常使用此模式,强制用户通过静态工厂方法初始化他们的类。
  2. 是的,这是一种方法
  3. 因为这是构造函数的作用 - 它构造。 (假设将返回施工结果)
  4. 与方法相同
  5. 关于您的Tomcat问题,它取决于Tomcat的哪个版本,它使用的IO模型(例如,NIO与历史网络IO模块)以及您的配置。单个Tomcat可以一次处理数百个请求,尽管并发是可调的(每个请求将由来自池的不同线程或线程处理)。

答案 5 :(得分:0)

构造函数的默认访问修饰符是CLASS ACCESS MODIFIER, 如果一个类是公共的,那么构造函数的访问修饰符是公共的。如果该类是默认的,那么构造函数也是默认的。

答案 6 :(得分:0)

  1. 在任何情况下,构造函数都可以创建为私有。
  2. 构造函数是一种特殊类型的方法,我们可以自动调用它 正在为相应的类创建对象。
  3. 构造函数不包含任何返回值。它只是创建新对象。不应该为构造函数提供任何返回类型。
  4. 构造函数的默认访问说明符为 public

答案 7 :(得分:-1)

  1. 因为new调用了构造函数。返回对象的是new,构造函数只是设置内部状态。
  2. 公开。