2、撰写一个 myString class,其中包含一个String对象,可于构造函数中通过引数来设定初值。加入toString()和concatenate()。后者会将String对象附加于你的内部字符串尾端。请为myString()实现clone()。撰写两个static函数,令它们都接收myString referencex引数并调用x.concatenate(“test”)。但第二个函数会先调用clone()。请测试这两个函数并展示其不同结果。请问这题该怎么做呢,麻烦高手来解决下,非常感谢
{ String sourceString;
//带参数的构造函数
public MyString(String str)
{
//在构造函数中通过引用数来设定初值
this.sourceString = str;
}
/**
* 重写toString方法
*/
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append(sourceString);
sb.append(":");
return sb.toString();
}
/**
* 实现讲传入参数连接到你的字符串尾端
*
* @param str
* 传入参数
* @return 链接好的字符串
*/
public String concatenate(String str)
{
return sourceString.concat(str);
}
/**
* 克隆实现
*/
public Object clone() throws CloneNotSupportedException
{
return super.clone();
}
/**
* 克隆前
*/
public static void cloneBegin(String str)
{
MyString testString = new MyString(" Clone begin ");
String result = testString.concatenate(str);
System.out.println(testString.toString() + result);
}
/**
* 克隆后
*/
public static void cloneAfter(String str) throws CloneNotSupportedException
{
MyString testString = new MyString(" Clone begin ");
MyString testStringClone = (MyString)testString.clone();
String result = testStringClone.concatenate(str);
System.out.println(testStringClone.toString()+result);
}
/**
* @param args
*/
public static void main(String[] args)
{
cloneBegin("test");
try
{
cloneAfter("testClone");
} catch (CloneNotSupportedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}}楼主 看看 是否符合要求的……