像大多数新程序员一样,我有一个小但重要的问题,我无法弄清楚。 我的程序不会拉我的构造函数。我尝试了很多不同的方法,似乎无法弄明白。任何帮助将不胜感激。
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();
答案 0 :(得分:10)
因为您添加了一个带有3个参数的构造函数,所以Employee
类不再具有默认构造函数 - 一个不带参数的构造函数。所以你不能这样做:
Employee x = new Employee();
并且您必须包含3个参数:
Employee x = new Employee("firstname", "lastname", 123.45);
如果要在不提供任何参数的情况下实例化Employee
,则必须添加无参数构造函数:
public Employee() {
}
您可以在section 8.8.9的Java 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)
答案 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)
您只提供带有三个参数的构造函数,但您尝试调用不带参数的构造函数。如果您的类没有其他构造函数,编译器会自动包含这样的构造函数,但仅。
所以你有两个选择: