java - 类中的构造函数不能用于给出类型
问题描述
我正在尝试创建多个继承自同一个超类的类。我的第一堂课效果很好。当我尝试第二个时,我收到一条我以前从未见过的错误消息。我是新手,所以我不确定如何解决这个问题。
这是课
class Employee extends Person{
double salary;
private java.util.Date dateCreated;
public Employee(){
}
public Employee(String name, String address, String phone_number, double salary){
super(name, address, phone_number);
this.salary = salary;
}
public String getDate(){
java.util.Date date = new java.util.Date();
return date.toString();
}
public double getSalary(){
return this.salary;
}
public String toString(){
return("Employee object:\n" + super.toString() + "\n" + "Salary:\t$" + getSalary() + "\n" + "Date Hired: " + getDate());
}
}
我正在尝试以这种方式调用该方法
Employee employee = new Employee (name, address, number, salary);
System.out.println(employee.toString());
我收到此错误消息:
testPerson.java:21: error: constructor Employee in class Employee cannot be applied to given types;
Employee employee = new Employee (name, address, number, salary);
^
required: no arguments
found: String,String,String,double
reason: actual and formal argument lists differ in length
1 error
这是 TestPerson 类
public class TestPerson{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("Please enter your name: ");
String name = input.next();
System.out.println("Please enter your address: ");
String address = input.next();
System.out.println("Please enter your phone number: ");
String number = input.next();
System.out.println("Please enter your yearly salary: ");
double salary = input.nextDouble();
Employee employee = new Employee (name, address, number, salary);
System.out.println(employee.toString());
}
}
这是清除它的父类。我可能做错了我没有注意到的事情。
import java.util.*;
public class Person{
private String name;
private String address;
private String phone_number;
public Person(){
}
public Person(String name, String address, String phone_number){
this.name = name;
this.address = address;
this.phone_number = phone_number;
}
public String getName(){
return this.name;
}
public String getAddress(){
return this.address;
}
public String getPhone(){
return this.phone_number;
}
public String toString(){
return ("Person object:\n" + "Name:\t\t" + getName() + "\n" + "Address:\t" + getAddress() + "\n" + "Phone#:\t" + getPhone());
}
}
解决方案
我从一开始就关注这个问题的状态,我发现它真的很有趣,所以我复制了你的代码并在本地测试它并像我期待的那样感到惊讶......没有发现任何错误。似乎您的编译器正在尝试使用不带参数的构造函数,而不是您提供的第二个构造函数。如果这确实是 testPerson.java 中使用的这个 Employee 类,您应该验证您的代码。
推荐阅读
- python - 如何从 azure blob 存储中读取 parquet 文件(大尺寸 1 GB)而不在本地机器上下载
- database - 2PC(2阶段提交)和2 PL(2阶段锁定)之间的区别
- android - 模拟器总是崩溃并出现错误“等待设备时出错:AVD 的模拟器进程已终止”
- angular - 角度问题(无法读取未定义的属性“流派”)
- python - 如何从pyhton中的ndarray(预测值)一张一张地显示/显示图像?
- python - Fastapi 和 Pydantic:如何嵌套对象?
- reactjs - 里面的文字
在 react-native 中,标签未显示在屏幕上 - java - 用于发布请求的 Spring Boot 中的处理程序方法正在更新数据库中的空值
- c++ - CommandLineParser 不接受内部带有减号的参数
- python - Python asyncio:我什么时候应该调用 wait_closed()?