试图在父数组java中执行子元素的

试图在父数组java中执行子元素的,java,arrays,Java,Arrays,我有三节课 public class PutController{ public PutController[] putControllerArray = new PutController[2]; public void controlar(int players) { if(numeroJugadores==0){ putControllerArray[0] = new PutAutoController(tablero, tableroVi

我有三节课

public class PutController{ 
    public PutController[] putControllerArray = new PutController[2];
    public void controlar(int players) {
        if(numeroJugadores==0){
        putControllerArray[0] = new PutAutoController(tablero, tableroView, turno, turnoView);
        putControllerArray[1] = new PutAutoController(tablero, tableroView, turno, turnoView);
        }
        if(numeroJugadores==1){
            putControllerArray[0] = new PutManualController(tablero, tableroView, turno, turnoView);
            putControllerArray[1] = new PutAutoController(tablero, tableroView, turno, turnoView);
        }
    }
}

public class PutManualController extends PutController {
    public void methodToCall(){
     .....
    }
}

public class PutAutoController extends PutController {
     public void methodToCall(){
      .....
     }
}

class Principal{
    private PutController putController = new PutController(tablero, tableroView, turno, turnoView);
}
在我的Principal类中,我想调用put类数组中元素的一个方法,如下所示

putController.putControllerArray[0].methodToCall();

希望你能帮助我。谢谢

只要
PutController
包含方法
methodToCall()
(作为子类实现的抽象方法,或者使用基类中的具体实现),就可以在数组的任何元素上调用它

public class PutController
{ 
...
    public void methodToCall ()
    {
        ....
    }
...
}
如果子类需要不同的实现,它们可以重写
methodToCall()

这将使代码
putControllerArray[0].methodToCall()
有效。当然,如果需要从类外部访问该数组,则需要创建类的实例,因为它不是静态成员。不过,最好将数组设为私有,并通过返回数组第i个元素的方法访问它

public class PutController
{ 
...
    public PutController getElement (int i)
    {
        if (i < 0 || i >= putControllerArray.length) {
            // TODO throw some exception
        }
        return putControllerArray[i];
    }
...
}
公共类控制器
{ 
...
公共PutController getElement(int i)
{
if(i<0 | | i>=putControllerArray.length){
//TODO抛出一些异常
}
返回控制器阵列[i];
}
...
}

然后可以通过
putController.getElement(0.methodToCall())执行
methodToCall()

我尝试做类似的事情,但没有正确理解。你能帮我举个例子吗?@RodrigoLópez不确定你哪里出了问题,但添加了一个例子。谢谢你的例子:)