输出结果为:
书名: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()方法。