JAVA 构造函数未定义

classStudent{privateStringname;privateintmath;publicvoidstudent(){}publicvoidstudent(... class Student{
private String name;
private int math;
public void student(){}
public void student(String n,int m){
this.setName(n);
this.setMath(m);
}
public void setName(String n){
name=n;
}
public void setMath(int m){
math=m;
}
public String getName(){
return name;
}
public int getMath(){
return math;
}
public String getinfo(){
return this.getName();
}

}
public class Test{
public static void main(String args[]){
Student st=new Student("aaa",222);
System.out.println(st.getinfo());
}
}

中Student st=new student("dadasd",333)d的时候,提示为构造函数为定义student(String,int)
展开
 我来答
匿名用户
推荐于2017-10-06
展开全部
构造函数是没有返回类型,这个没有就是完全无,void都没有的。
public void student(String n,int m){
this.setName(n);
this.setMath(m);
}

这是一个方法而不是构造函数。
如果想到达到你的目的只需要把 void删除,那么这个方法就成为构造函数了。代码就正确了。

java类默认的构造函数是: 一个空参数 一类名为方法名 无返回类型修饰,按照你所写的类, 那么方法是 public Student(){}

而你的这个student(String n,int m)方法,java编译看做是一个方法,而不是构造函数
目前他只有一个默认的构造函数那就是 public Student(){} 无参数,你传了参数那么当然找不到构造函数。

记住一点:构造函数是一个特殊的函数,他是无返回类型修饰(就是没有任何返回类型,包括void也没有),其次就是 和类名一摸一样。这才是构造函数。参数就随意了。
追问
但是去掉viod就提示缺少方法的返回值~~
追答
当然,因为你的方法名是小写的,注意。方法名要和类名一摸一样才是构造函数
邗启3V
2013-01-10 · TA获得超过7270个赞
知道大有可为答主
回答量:1413
采纳率:100%
帮助的人:1375万
展开全部
public void student(String n,int m){
this.setName(n);
this.setMath(m);
}
这个不是构造函数
构造函数没有返回类型
改成:
public student(String n,int m){
this.setName(n);
this.setMath(m);
}

希望对你有帮助
追问
去掉void后会提示缺少方法的返回值。而返回值类型一个是String一个是int  不知道该如何给定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
litongyu1111
2013-01-10 · TA获得超过111个赞
知道答主
回答量:206
采纳率:0%
帮助的人:103万
展开全部
class Student {
private String name;
private int math;
Student(String name,int math) {
this.math=math;
this.name=name;
}
public void student() {
}

public void student(String n, int m) {
this.setName(n);
this.setMath(m);
}

public void setName(String n) {
name = n;
}

public void setMath(int m) {
math = m;
}

public String getName() {
return name;
}

public int getMath() {
return math;
}

public String getinfo() {
return this.getName();
}
}

增加构造方法
Student(String name,int math) {
this.math=math;
this.name=name;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aoisora_blue
2013-01-10 · TA获得超过412个赞
知道小有建树答主
回答量:583
采纳率:0%
帮助的人:362万
展开全部
不需要指定void
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式