Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有ArrayList的Java多态性_Java_Arraylist_Polymorphism_Subclass_Superclass - Fatal编程技术网

带有ArrayList的Java多态性

带有ArrayList的Java多态性,java,arraylist,polymorphism,subclass,superclass,Java,Arraylist,Polymorphism,Subclass,Superclass,我在eclipse中编写代码,我有一个名为platform的类和一些子类,如redplatform、blueplatform。我想创建一个可以同时存储blueplatform和redplatform的arraylist,到目前为止我已经完成了这项工作 ArrayList<Platform> p = new ArrayList<Platform>(); private void createPlatform() { switch (platform) { c

我在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);
    }
}
ArrayList p=new ArrayList();
私有void createPlatform(){
交换机(平台){
案例0:
p、 增加(新绿色平台(x,y));
案例1:
p、 添加(新的红色平台(x,y));
案例2:
p、 添加(新BluePlatform(x,y));
案例3:
p、 添加(新品红色平台(x,y));
案例4:
p、 添加(新平台(x,y));
}
重新油漆();
@凌驾
公共组件(图形g){
//TODO自动生成的方法存根
超级组件(g);
对于(int i=0;i
在每个类中,它都有一个paint方法,可以将颜色设置为不同的颜色并进行绘制
但现在它们都是灰色的。这很令人沮丧。

我知道,我一直在犯那个错误!但这对程序有什么影响?中断不只是打破for循环吗?因为int平台只有一个int,所以其中一个案例会执行,而其他案例不会执行,对吗?@yuzhengwen
switch
的工作原理是这样的:一旦案例匹配如果你不破坏它,匹配的case之后的每一条语句都会被执行,即使它们在不同的情况下。例如,如果case2是匹配的,而你不使用break,那么case2、case3、case4下的所有语句都会被执行。阅读这里的更多内容:我明白了,我犯了那个错误!但是这对程序有什么影响?break ju不是吗st跳出for循环?因为int平台只有一个int,其中一个会执行,其他的不会,对吗?@yuzhengwen
switch
的工作原理是这样的:一旦一个case被匹配,而你没有打破它,那么匹配的case之后的每个语句都会被执行,即使它们在不同的case下。例如,如果case2 i如果匹配了,你不使用break,那么案例2、案例3、案例4下的所有内容都将被执行。在这里阅读更多内容:我明白了,我犯了那个错误!但这对程序有什么影响?break不就是跳出for循环吗?因为int平台只有一个int,其中一个会执行,其他的不会,对吗?@yuzhengwen
switch
的工作原理是这样的:一旦匹配了一个案例,并且您没有破坏它,那么匹配案例之后的每一条语句都将被执行,即使它们在不同的案例下。例如,如果案例2匹配,而您不使用break,那么案例2、案例3、案例4下的所有语句都将被执行。请阅读这里的更多内容:我明白了,我犯了那个错误!但是这对程序有什么影响?break不就是跳出for循环吗?因为int平台只有一个int,其中一个会执行,其他的不会,对吗?@yuzhengwen
switch
的工作原理是这样的:一旦一个case匹配了,而你没有打破它,那么匹配的case之后的每一条语句都会执行,即使它们是e在不同的情况下。例如,如果情况2匹配,并且您不使用break,那么情况2、情况3、情况4下的所有内容都将被执行。请阅读此处的更多内容:
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));
}