作业帮 > 综合 > 作业

clone问题import java.util.*;public class Clonetest{\x05public

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/26 09:22:55
clone问题
import java.util.*;
public class Clonetest
{
\x05public static void main(String[] srgs)
\x05{
\x05\x05try
\x05\x05{
\x05\x05\x05employee original=new employee("jony",50000);
\x05\x05\x05original.sethireday(2000,1,1);
\x05\x05\x05employee copy=original.clone();
\x05\x05\x05copy.setsalary(10);
\x05\x05\x05copy.sethireday(2002,12,31);
\x05\x05\x05System.out.println("original:"+original);
\x05\x05\x05System.out.println("copy:"+copy);
\x05\x05}
\x05\x05catch(CloneNotSupportedException e)
\x05\x05{
\x05\x05\x05e.printStackTrace();
\x05\x05}
\x05}
\x05
}
class employee implements Cloneable
{
\x05public employee(String n,double s)
\x05{
\x05\x05name=n;
\x05\x05salary=s;
\x05\x05hireday=new Date();
\x05}
\x05
\x05public employee clone() throws CloneNotSupportedException
\x05{
\x05\x05employee cloned=(employee)super.clone();
\x05\x05cloned.hireday=(Date)hireday.clone();
\x05\x05return cloned;
\x05}
\x05
\x05public void sethireday(int year,int month,int day)
\x05{
\x05\x05Date newd=new GregorianCalendar(year,month-1,day).getTime();
\x05\x05hireday.setTime(newd.getTime());
\x05}
\x05public void setsalary(double p){salary+=salary*p/100;}
\x05
\x05public String toSting(){return "employee[name:"+name+",salary:"+salary+",hireday:"+hireday+"]";}
\x05
\x05private Date hireday;
\x05private double salary;
\x05private String name;
}
这是书上的,
System.out.println("original:"+original);
System.out.println("copy:"+copy);
是想输出什么?toString()为什么没有用
可是这里面有重写toString()方法啊
,public String toSting(){return "employee[name:"+name+",salary:"+salary+",hireday:"+hireday+"]";}
为什么输出的是
original:p215.employee@14318bb
copy:p215.employee@ca0b6
clone问题import java.util.*;public class Clonetest{\x05public
童鞋,你的toString方法写错了...(toSting)
这是常犯的错,重写(override)需要方法签名完全一样,不然就是个新method而已.
加上注解(annotate)@Override可以帮助你
@Override
public String toSting() ...
====
method does not override or implement a method from a supertype
@Override
^
1 error
再问: 不好意思 我是新手 你写的这些完全看不懂 而且我这是JAVA核心技术书上的例子,我没有改动,只是觉得结果有问题,书上也没有写结果
再答: 好吧 你仔细看:你要的是toString方法,但你的代码里写的是toSting,你写错了或者书上印错了。 你把toSting 改成toString就起作用了。