class Object {
...
public Object clone() { ... }
}
在5.0以前,如果子类需要重载clone方法,必须像下面这样写代码:
class Point {
public int x;
public int y;
public Point(int x, int y) { this.x=x; this.y=y; }
public Object clone() { return new Point(x,y); }
}
虽然在我们的Point类里,clone方法总是返回一个Point类型的对象,但却必须把返回类型写成Object,在外部使用clone方法时也必须使用恼人的强制类型转换。
在Java5.0以后,我们就可以利用新的覆盖规则,像下面这样编写代码:
class Point {
public int x;
public int y;
public Point(int x, int y) { this.x=x; this.y=y; }
public Point clone() { return new Point(x,y); }
}
这样,我们就可以直接使用Point p2 = p1.clone(); 而不用强制类型转换了。作者: 马强 时间: 2012-4-13 22:49
class Fu
{
public Demo show() //父类的类型决定了子类要覆盖的返回值类型,object包括一切,如果这里我们用返回值的类型也是类似于object和子类的类型
{
return new Demo2();
}
}
public class Practice extends Fu
{
public static void main(String[] args)
{
System.out.println(new Practice().show());
}
public Demo1 show()
{
return new Demo1();
}
}
class Demo
{
}