class BirthDate
{
private int day;
private int month;
private int year;
private double time;
public BirthDate(int d,int m,int y)
{
day=d;
month=m;
year=y;
}
public BirthDate(int d,int m,int y,int t)
{
day=d;
month=m;
year=y;
time=t;
}
public void setDay(int d)
{
day=d;
}
public void setMonth(int m)
{
month=m;
}
public void setYear(int y)
{
year=y;
}
public int getDay()
{
return day;
}
public int getMonth()
{
return month;
}
public int getYear()
{
return year;
}
public void display()
{
System.out.println(day+ "-" + month+ "-" + year);
}
public void show()
{
System.out.println(day+ "-" + month+ "-" + year+"-" +time);
}
}
public class Test{
public static void main(String[] args)
{
Test test=new Test();
int date=9;
BirthDate d1=new BirthDate(7,7,1970);
BirthDate d2=new BirthDate(1,1,2000);
BirthDate d3=new BirthDate(1,1,2000,18.00);
test.change1(date);
test.change2(d1);
test.change3(d2);
System.out.println("date="+date);
d1.display();
d2.display();
d3.show();
}
public void change1(int i)
{
i=1234;
}
public void change2(BirthDate b)
{
b=new BirthDate(22,2,2004);
}
public void change3(BirthDate b)
{
b.setDay(22);
}
}
哪里错了?有一个错误,出现在BirthDate d3=new BirthDate(1,1,2000,18.00);这里。指向new。
java构造方法重载问题。
答案:2 悬赏:20
解决时间 2021-02-21 05:33
- 提问者网友:伪善人独行者
- 2021-02-20 05:05
最佳答案
- 二级知识专家网友:茫然不知崩溃
- 2021-02-20 06:28
public BirthDate(int d,int m,int y,int t)
{
day=d;
month=m;
year=y;
time=t;
}
你的构造函数中是4个int型参数
而你调用时BirthDate d3=new BirthDate(1,1,2000,18.00);
传进去的最后一个参数18.00是double型的,int型要小于double,不能自动转型,所以要报错
要么修改构造方法,改成接受一个String类型的,将18.00改成“18.00”
要么改成一个接收double类型的
或者修改18.00为18
{
day=d;
month=m;
year=y;
time=t;
}
你的构造函数中是4个int型参数
而你调用时BirthDate d3=new BirthDate(1,1,2000,18.00);
传进去的最后一个参数18.00是double型的,int型要小于double,不能自动转型,所以要报错
要么修改构造方法,改成接受一个String类型的,将18.00改成“18.00”
要么改成一个接收double类型的
或者修改18.00为18
全部回答
- 1楼网友:啵啵桃汀
- 2021-02-20 06:48
楼主,我来回答你这个问题,我最近在做scjp的考题,经常碰到这类题。
首先得指出你的错误,构造方法是不能有返回值的,所以你上面的两个方法不是构造方法,而只是刚好和类名相同的成员函数。
构造函数可以是public和private的,也可以是缺省的(就是什么也不写),public 和private的区别是public的构造函数可以在别的类中用new 方法实例化一个对像,比如new apple();private的构造函数就不得在别的类中用new 方法实例化对像,否则编译器就会报错。
说得简单点,public标注的方法或者构造函数可以在所有类中被调用,而private标注的方法或者构构造函数只能在自己类中调用,即使是子类也不能!
满意给分啊 ^^
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯