Java找不到构造函数

时间:2010-10-04 19:43:53

标签: java

像大多数新程序员一样,我有一个小但重要的问题,我无法弄清楚。 我的程序不会拉我的构造函数。我尝试了很多不同的方法,似乎无法弄明白。任何帮助将不胜感激。

Error
EmployeeTest.java:13: cannot find symbol
symbol  : constructor Employee()
location: class Employee
    Employee x = new Employee();
                 ^
EmployeeTest.java:14: cannot find symbol
symbol  : constructor Employee()
location: class Employee
    Employee y = new Employee();
public class Employee
{
private double salaryValue; // variable that stores monthlySalary
private String firstName; // instance variable that stores first name
private String lastName; // variable that stores last name

 public Employee( String firstNameParameter , String lastNameParameter ,  double          salaryValueParameter )
{

    if ( salaryValueParameter < 0.0 ) // validate monthlySalary > 0.0
    salaryValue = 0.0; // if not salary is intitalized to default

    else 

      firstName = firstNameParameter;
      lastName = lastNameParameter;
      salaryValue = salaryValueParameter;
}  

 public class EmployeeTest 
{
public static void main( String[] args )
{   
String temp;
Double temp2;
Double temp3;

Employee x = new Employee();
Employee y = new Employee();

8 个答案:

答案 0 :(得分:10)

因为您添加了一个带有3个参数的构造函数,所以Employee类不再具有默认构造函数 - 一个不带参数的构造函数。所以你不能这样做:

Employee x = new Employee();

并且您必须包含3个参数:

Employee x = new Employee("firstname", "lastname", 123.45);

如果要在不提供任何参数的情况下实例化Employee,则必须添加无参数构造函数:

public Employee() {
}

您可以在section 8.8.9Java Language Specification中了解有关默认构造函数的更多信息。

答案 1 :(得分:3)

您正在调用没有任何参数的构造函数:

new Employee()

这会导致Java在您的类中查找此默认构造函数:

public Employee() {}

它无法找到,因为你有一个带参数的自定义构造函数,因此错误。您的Employee类只有这个构造函数:

public Employee(String, String, double) {}

您应该将参数传递给new语句中的构造函数,或者显式声明默认的无参数构造函数并实现它(作为其他构造函数的重载,可能传递默认值或其他内容)

答案 2 :(得分:2)

默认情况下,类具有no-arg构造函数。即。

 public Employee()

如果你以后再添加自己的构造函数..即

 public Employee( String name )

然后列出的那些是你可以使用的唯一的。

如果您仍想调用默认值,请将其重新添加。

public Employee()

答案 3 :(得分:0)

您必须添加默认的公共构造函数:

public void Employee();

答案 4 :(得分:0)

您必须定义默认构造函数。实现自定义时,默认值将丢失

public class Employee{
   public Employee(){}
...
}

Here是关于构造函数的简短文章

答案 5 :(得分:0)

您的构造函数定义     String firstNameParameter,String lastNameParameter,double salaryValueParameter

作为参数。你打电话的时候     员工x =新员工(); 你正在调用一个不存在的构造函数。请尝试以下方法:

Employee x = new Employee('David', 'Jones', 50000);

答案 6 :(得分:0)

您正在尝试使用空构造函数创建新类,但您声明的唯一构造函数是需要参数的构造函数。你应该尝试类似的东西:

Employee x = new Employee("Bob", "Jones", "100.0");

或者,声明一个默认构造函数:

public Employee() {
    //do cool stuff here
}

希望有所帮助。

答案 7 :(得分:0)

您只提供带有三个参数的构造函数,但您尝试调用不带参数的构造函数。如果您的类没有其他构造函数,编译器会自动包含这样的构造函数,但

所以你有两个选择:

  • 包含另一个没有参数的构造函数
  • 使用正确数量和类型的参数调用构造函数