以下为Shape.java
import java.awt.*;
public abstract class Shape
{
public abstract void draw(Canvas c);
}
以下为Circle.java
import java.awt.*;
public class Circle extends Shape
{
public void draw(Canvas c)
{
System.out.println("在画布"+c+"上画一个圆。");
}
}
以下为Rectangle.java
import java.awt.*;
public class Rectangle extends Shape
{
public void draw(Canvas c)
{
System.out.println("在画布"+c+"上画一个矩形。");
}
}
以下为Canvas.java
import java.util.*;
public class Canvas
{
public void drawAll(List<? extends Shape> shapes)
{
for(Shape s : shapes)
{
s.draw(this);
}
}
public static void main(String[] args)
{
List<Circle> circleList=new ArrayList<Circle>();
circleList.add(new Circle());
circleList.add(new Circle());
List<Rectangle> rectangle=new ArrayList<Rectangle>();
rectangle.add(new Rectangle());
Canvas c=new Canvas();
c.drawAll(circleList);
c.drawAll(rectangle);
}
}
可能的输出结果:
在画布Canvas@413f9276上画一个圆。
在画布Canvas@413f9276上画一个圆。
在画布Canvas@413f9276上画一个矩形。