【发布时间】:2021-09-14 01:39:27
【问题描述】:
public class Client {
public static void main(String args[]){
Malo e = new Malo();
e.setEid(11);
e.setEsalary(3000);
e.setEname("durga");
System.out.println(e);
}
}
当我创建一个对象并用点运算符传递参数时它不起作用。它说构造函数没有定义
public class Client {
public static void main(String args[]){
Malo e = new Malo(11,3000,"del");
System.out.println(e);
}
}
但是当我将参数传递到对象创建行时它可以工作,但是为什么上述方法不起作用?
public class Malo {
int eid;
int esalary;
String ename;
//constructors
public Malo(int eid, int esalary, String ename) {
this.eid = eid;
this.esalary = esalary;
this.ename = ename;
}
public int getEid() {
return this.eid;
}
public void setEid(int eid) {
this.eid = eid;
}
public int getEsalary() {
return this.esalary;
}
public void setEsalary(int esalary) {
this.esalary = esalary;
}
public String getEname() {
return this.ename;
}
public void setEname(String ename) {
this.ename = ename;
}
@Override
public String toString() {
return "{" +
" eid='" + getEid() + "'" +
", esalary='" + getEsalary() + "'" +
", ename='" + getEname() + "'" +
"}";
}
}
这是我的 malo 课程,我宣布为公开的
【问题讨论】:
-
你在问
Malo的课程,但你没有告诉我们课程?!?如果您不向我们展示,我们如何知道该类具有哪些构造函数。 -
@Andreas 你可以真的很好地猜测类没有有什么构造函数。
-
@Andreas 你现在能告诉我原因吗?
-
@DeepakSilver 是的,这是因为您没有声明无参数构造函数。编译器仅在没有构造函数时创建默认的无参数构造函数。一旦你声明了一个构造函数,如果你仍然想要一个,你必须显式声明一个无参数的构造函数。
标签: java class constructor