【问题标题】:Confuse with the object instantiate via default constructor通过默认构造函数与对象实例化混淆
【发布时间】:2015-01-24 13:28:21
【问题描述】:

我会很感激这方面的帮助:

为什么我们使用以下语法来创建对象:

A a = new A();

为什么我们使用默认构造函数?即使我的班级结构像

class A{
  public static void main(String[] aregs)
  {
    A a = new A();
  }
}

我没有声明任何实例变量,那为什么我需要默认构造函数?

为什么我们的构造函数名和类名一样?

构造函数是否返回任何值或引用。

【问题讨论】:

  • 这是非常基本的 Java 内容 - 我建议您购买一本介绍性的 Java 网络书籍并阅读 - Eckel 的 Java 思考会是一本很好的书。
  • 可能这样您就可以启动程序流程,而无需所有内容都必须在 static 上下文中。
  • 参见:SO java-default-constructorjava constructor tutorial - N.B.这是前两个谷歌点击。实际上,你可以做得比整个java tutorial 更糟糕。
  • 谢谢!!!!但我在网上和书中搜索了很多,但没有找到令人满意的...如果您有任何相关的知识链接..请分享。
  • @wmorrison365--嗨,您提到的链接实际上是在解释什么是默认构造函数。请仔细查看我的问题。我关心的一点是即使我没有任何变量,我们也需要 DC。为什么我们遵循该语法

标签: java


【解决方案1】:

我没有声明任何实例变量,那为什么我需要默认构造函数?

创建对象需要构造函数。即使你没有在你的类中声明任何字段,你仍然需要调用构造函数,它会依次(自动)调用超类的构造函数,然后在堆上分配一个对象,并返回对这个分配的引用对象。

为什么我们的构造函数名和类名一样

这只是语言规范。

构造函数是否返回任何值或引用

是的,正如我之前提到的,它返回对在堆上创建的对象的引用。

【讨论】:

  • 感谢您的努力!!但如果你能提供一些关于它的书面信息会很棒......我可以在哪里找到这个。
  • 我会为你推荐这本书:“Java Head First”。第 9 章“对象的生与死”将回答您的问题。
【解决方案2】:
  1. 您需要一个默认构造函数,以便它可以创建对象的实例。这是必需的,以便它可以获取内存地址,以便 java 知道对象数据的存储位置
  2. 它与类同名,因此 java 知道哪些方法是/是构造函数
  3. 构造函数不返回任何值,它在后台返回的是内存地址(如 1 所述)

这是该语言附带的所有基本 Java 内容。如果我是你,我会看this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2018-06-11
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2016-10-29
    相关资源
    最近更新 更多