gpt4 book ai didi

java - 尝试执行父数组java中的子元素

转载 作者:行者123 更新时间:2023-12-02 05:25:31 25 4
gpt4 key购买 nike

我有三门课。

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() 有效。当然,如果您需要从类外部访问该数组,则需要创建类的实例,因为它不是静态成员。不过,最好将数组设为私有(private)并通过返回数组第 i 个元素的方法来访问它。

public class PutController
{
...
public PutController getElement (int i)
{
if (i < 0 || i >= putControllerArray.length) {
// TODO throw some exception
}
return putControllerArray[i];
}
...
}

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

关于java - 尝试执行父数组java中的子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26073456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com