【问题标题】:Java Constructor undefined?Java构造函数未定义?
【发布时间】:2011-04-11 00:48:28
【问题描述】:

好的,我正在为学校做作业,我设置了我的主要课程和另一个名为 Transaction 的课程。在我的主要课程中,我有:

Transaction t = new Transaction();

Transaction 有下划线:它表示构造函数未定义。为什么?!

Transaction 类如下所示:

public class Transaction {

private String customerNumber, fName, lName, custAddress, custCity;
private int custZip, custPhone;

/** Constructor*/
public Transaction(String a, String b, String c, String d, String e, int f, int g){
    this.customerNumber = a;
this.fName = b;
this.lName =c;
this.custAddress = d;
this.custCity = e;

}

看起来它应该可以正常工作,但事实并非如此。即使我将一堆变量插入到我在 main 中创建新 Transaction 对象的位置,它仍然显示未定义。有人请帮忙!

【问题讨论】:

  • 看来您至少需要阅读一些 Java 101 才能开始使用。
  • 我建议你也检查一下你的变量名。另外,如果您不使用所有这些,为什么要在构造函数中参数化fg

标签: java methods constructor


【解决方案1】:

您的类中没有默认构造函数定义。

当您提供至少一个参数化构造函数的定义时,编译器不再为您提供默认构造函数。

【讨论】:

    【解决方案2】:

    这是因为你没有声明一个没有参数的构造函数。

    当您根本没有定义构造函数时,会自动为您定义一个没有参数的默认构造函数。

    但是现在你已经声明了一个带参数的构造函数,你现在需要传递它们或者声明另一个不带参数的构造函数。

    【讨论】:

    • Constrictor...潜意识泄漏? :)
    【解决方案3】:

    您需要创建一个默认构造函数(不带参数的构造函数)。

    【讨论】:

      【解决方案4】:

      那些说你没有默认构造函数的人,因为你用参数编写了一个构造函数,他们在想 C++。这对于 C++ 是正确的,但对于 Java 则不然。没有默认构造函数之类的东西。您必须为您的类编写任何构造函数。如果您不打算构造任何对象,则不必有构造函数。

      【讨论】:

      • 在 Java 中,如果你没有指定构造函数,你会得到一个没有参数的默认构造函数。
      • 我做了实验。你是说 myClass mc = new myClass();如果您没有编写无参数构造函数,可以使用吗?当我尝试它时,它不起作用。
      • @JD Williams:默认构造函数仅在您完全没有指定其他构造函数时才存在,而不仅仅是没有没有参数的构造函数。请参阅 java.sun.com/docs/books/jls/third_edition/html/… ,它定义了默认构造函数。
      • 感谢您的链接,马修。我回去看看我的实验做错了什么。我现在确实看到,只有在没有定义构造函数时才提供默认值。我的错误在于草率地阅读问题......因为他有一个带参数的构造函数,所以他需要提供一个默认值。如果他没有编写任何构造函数,那么编译器会提供一个。顺便说一句,我在发表第一条评论前几分钟就在网站上注册了。不是一个很好的开始,但我很感激让我的理解有所提高。
      猜你喜欢
      • 1970-01-01
      • 2015-02-12
      • 2022-01-02
      • 2011-04-13
      • 2018-01-04
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多