我试图创建一个Person类,其构造函数使用给定的参数启动实例变量,但是当通过主类创建新的person对象时,代码无法编译,因为Person构造函数不需要参数,但是我在构造函数中指定了四个.我正在使用NetBeans 7.2.1 ..这是我的代码:
public class Person {
private String fName;
private String mName;
private String lName;
private String dob;
public void Person(String first, String middle, String last, String dateOfBirth){
fName = first;
mName = middle;
lName = last;
dob = dateOfBirth;
}
public String getFirstName(){
return fName;
}
public String getMiddleName(){
return mName;
}
public String getLastName(){
return lName;
}
public String getDOB(){
return dob;
}
public void getFullName(){
System.out.println(fName + " " + mName + " " + lName);
}
public void setFirstName(String name){
fName = name;
}
public void setMiddleName(String name){
mName = name;
}
public void setLastName(String name){
lName = name;
}
public void setDOB(String date){
dob = date;
}
public static void main(String[] args) {
Person p1 = new Person("John","Thomas","Smith", "10 Jul 14");
p1.getFullName();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我运行程序时收到的错误:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - constructor Person in class Person cannot be applied to given types;
required: no arguments
found: java.lang.String,java.lang.String,java.lang.String,java.lang.String
reason: actual and formal argument lists differ in length
at Person.main(Person.java:54)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
rge*_*man 10
这不是构造函数; 因为void,这是一种方法.
public void Person(String first, String middle, String last, String dateOfBirth){
Run Code Online (Sandbox Code Playgroud)
没有显式构造函数,因此Java编译器创建了一个默认的no-arg构造函数.这解释了错误消息中指出的部分:
required: no arguments
Run Code Online (Sandbox Code Playgroud)
删除void将其转换为构造函数.
public Person(String first, String middle, String last, String dateOfBirth){
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |