Java与ArrayLists的多态性

时间:2014-12-05 15:21:35

标签: java arraylist polymorphism subclass superclass

我在eclipse中编写代码,我有一个名为platform的子类和子类,如redplatform,blueplatform。我想创建一个可以存储blueplatform和redplatform的arraylist,到目前为止我已经完成了这个。

ArrayList<Platform> p = new ArrayList<Platform>();
private void createPlatform() {
    switch (platform) {
    case 0:
        p.add(new GreenPlatform(x, y));
    case 1:
        p.add(new RedPlatform(x, y));
    case 2:
        p.add(new BluePlatform(x, y));
    case 3:
        p.add(new MagentaPlatform(x, y));
    case 4:
        p.add(new GrayPlatform(x, y));
    }
repaint();
@Override
public void paintComponent(Graphics g) {
    // TODO Auto-generated method stub
    super.paintComponent(g);
    for (int i = 0; i < p.size(); i++) {
        p.get(i).paint(g);
    }
}

在每个类中,它都有一个paint方法,可以将颜色设置为不同的颜色并进行绘制 但是现在所有这些都是灰色的。这令人沮丧。

1 个答案:

答案 0 :(得分:3)

switch (platform) {
case 0:
    p.add(new GreenPlatform(x, y));
    break;
case 1:
    p.add(new RedPlatform(x, y));
    break;
case 2:
    p.add(new BluePlatform(x, y));
    break;
case 3:
    p.add(new MagentaPlatform(x, y));
    break;
case 4:
    p.add(new GrayPlatform(x, y));
}