如果我有一个描述例如的类。people,命名为 Person,然后它有 6 个子类,例如 Child、Adult Man、Adult Woman 等。他们都有 ID、头发颜色、眼睛颜色等。只是他们的外观不同,所以我所有的子类都包含他们的自己的paint() 方法。每个人都有两个坐标来告诉程序必须在框架上绘制它们的位置,所有子类都得到这些坐标,如下所示:
class AdultMan extends Person
{
AdultMan(int x, int y) {
super(x,y);
// I haven't yet worked with the hair color, eye color...
// only the coordinates to test my idea out
}
public void paint(Graphics g) {
int x = getX();
int y = getY();
// The drawing of an adult man from basic shapes
// based on the given coordinates (and colors later)
}
}
因此,在我处理给定数据的另一个类中,我将它们全部放在一个地图中Map<Integer,Person>
(整数是 ID),然后在一个扩展 Jframe 的类中,我将地图的值放在一个集合中并像这样迭代它们:
for (Person person : persons)
{
// (persons is the name of my collection)
if(person.typeName.equals("adultMan"))
{
person = new AdultMan(person.x,person.y);
person.paint(g);
}
}
我有 6 种类型的人,所以我想对每种类型都这样做。问题是,如果我的地图中最多有 40 人,则可能有 30 个人左右,这只会在框架上绘制第一个并跳到下一个不同的类型。