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);
}
}
输出三行,后两行看不懂? 为什么一样呢?求大虾赐教?! 展开
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);
}
}
输出三行,后两行看不懂? 为什么一样呢?求大虾赐教?! 展开
展开全部
输出结果为:
书名: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方法,因此和第一行的结果一样,第三行的原因类似。
书名: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方法,因此和第一行的结果一样,第三行的原因类似。
展开全部
就是用了一个向下强制类型转换,用x的实例初始化y,你仔细看copy()方法的定义。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为(Book)这个已经把x.copy()的Object类型强制转换回Book了。所以输出的话调用的Book里重写过的toString()方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询