2010-09-11 155 views
5

好吧,我正在为学校做一份作业,并且设立了我的主类和另一个叫做Transaction的类。在我的主类中,我有:Java构造函数未定义?

Transaction t = new 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对象的位置时,它仍然表示未定义。有人请帮忙!

+1

看起来你需要阅读至少一些Java 101才能入门。 – 2010-09-11 05:30:35

+0

我建议你也检查你的变量名称。另外,如果你没有使用它们,为什么在构造函数中设置'f'和'g'? – 2014-01-30 22:19:06

回答

8

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

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

5

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

当你根本没有定义任何构造函数时,就会有一个默认构造函数,它没有为你自动定义任何参数。

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

+0

蟒蛇...潜意识泄露? :) – 2010-09-11 05:28:37

+0

血腥的iPad拼写检查 – Tom 2010-09-11 05:34:18

4

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

-5

那些说你没有默认构造函数,因为你用参数编码构造函数的人都在想C++。对于C++而言,这是真的,但对于Java来说则不然。没有这样的事情作为默认的构造函数。你必须为你的类编写任何构造函数。如果不打算构造任何对象,则不必具有构造函数。

+1

在Java中,如果您不指定构造函数,您将得到一个没有参数的默认构造函数。 – 2010-09-11 06:03:53

+0

我尝试过。你是说myClass mc = new myClass();可以使用,如果你没有编码的无参数构造函数?当我尝试它时,这不起作用。 – 2010-09-11 07:09:32

+1

@JD Williams:默认的构造函数只有在你完全不指定其他构造函数时才存在,而不仅仅是没有参数的构造函数。请参阅http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.8.9,其中定义了默认构造函数。 – 2010-09-11 08:05:54