void doStuff(Sharp s){
s.erase();
//...
s.draw();
}
Line l=new Line();
Circle c=new Circle();
doStuff(c);
doStuff(c);
执行的是circle的erase和draw方法
----------------------------------------------------
用重载实现:
public void doStuff(Line s){
s.erase();
//...
s.draw();
}
public void doStuff(Circle s){
s.erase();
//...
s.draw();
}
-----------------------------------------------------
有时候,为了利用这种多态的作用,基类可以进行abstract ,即不允许创建基类的instance。这个时候将子类向上转型成基类,使用它们的接口。因此,方法需要定义成abstract,由它的子类来implement.