java string小问题,求高手赐教!

importjava.lang.Object;interfaceCopyable{Objectcopy();}classBookimplementsCopyable{st... import java.lang.Object;

interface Copyable
{
Object copy();
}
class Book implements Copyable
{
static String book_name;
String book_id;
public Book(String name,String id)
{
this.book_name = name;
this.book_id = id;
}
public String toString()
{
return "书名:"+book_name+",书名="+book_id;
}
public Object copy()
{

return new Book(book_name,book_id);
}

public static void main(String args[])
{
Book x = new Book("java","asdf1234");
System.out.println(x);
System.out.println(x.copy());
Book y = (Book)x.copy();
System.out.println(y);
}
}

输出三行,后两行看不懂? 为什么一样呢?求大虾赐教?!
展开
 我来答
躁动的长臂猿
2011-10-13
知道答主
回答量:7
采纳率:0%
帮助的人:9.2万
展开全部
输出结果为:
书名:java,书名=asdf1234
书名:java,书名=asdf1234
书名:java,书名=asdf1234
其中输出的第二行输出 x.copy() 相当于Object obj=x.copy();system.out.println(obj);由于x.copy()返回的是Object类型的对象,但是实际返回的是一个Book类型的实例,当调用system.out.println(x.copy());方法的时候自动调用对象的toString方法,因此和第一行的结果一样,第三行的原因类似。
淮下布衣
2011-10-13
知道答主
回答量:16
采纳率:0%
帮助的人:10.7万
展开全部
就是用了一个向下强制类型转换,用x的实例初始化y,你仔细看copy()方法的定义。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泰然还素净的海鸥H
2011-10-13 · TA获得超过332个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:135万
展开全部
因为(Book)这个已经把x.copy()的Object类型强制转换回Book了。所以输出的话调用的Book里重写过的toString()方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式