gpt4 book ai didi

java - 在一行中调用所有相同命名的方法

转载 作者:行者123 更新时间:2023-11-30 04:00:45 24 4
gpt4 key购买 nike

我想在我的游戏引擎(用Java SE编写)中制作类似“行为逻辑”的东西,但我没能制作出来,因此我不知道如何确保自动调用所有子类方法。它的工作方式与 Unity3D 的行为类似(如 Update()、Start()...),但逻辑不同。在这里我提供我实现它的尝试

public abstract class Behaviour {
void Start(){}

abstract void Update(){}

}

该类由DaturaBehaviour类继承

public class DaturaBehaviour extends Behaviour{

public void AppInit()
{
Start();
System.out.println("foo");
}

public void AppRun()
{
Update();
OnGUI();
}

}

从我定义将被调用的方法(例如引擎初始化中的AppInit方法,绘制的每个帧中的AppRun)。

所以这些是这个系统的基础。我还做了一个测试课:

public class TestBehaviour extends DaturaBehaviour {

@Override
void Start()
{
System.out.println("bar");//this isn't called dunno why
}

}

这是我第一次尝试用 Java 制作游戏,所以如果这是显而易见的事情,请不要生气。谢谢!

最佳答案

I don't know how to make sure that all the subclass methods are called automatically

您必须知道您调用的内容以及在方法中使用的参数。在代码中的某个时刻,您必须手动编写要调用的方法和顺序。

编辑:

啊,我大概知道你在想什么。这是如何做到这一点的方法:

private class Something {
public void yeah() {
System.out.println("");
}
}

private class Something2 extends Something{
@Override
public void yeah(){
super.yeah();
}
}

EDIT2:好的,这只是猜测,但我认为您可能想要的是:

private static abstract class Animal{
abstract void sound();
}

private static class Dog extends Animal{
@Override
void sound() {
System.out.println("haf");
}
}

private static class Cow extends Animal{
@Override
void sound() {
System.out.println("mooooo");
}
}


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
List<Animal> animals = new ArrayList<>();
animals.add(new Dog());
animals.add(new Cow());
animals.add(new Dog());
animals.add(new Dog());
animals.add(new Dog());
animals.add(new Cow());
animals.add(new Cow());
animals.add(new Cow());
animals.add(new Dog());
animals.add(new Cow());
animals.add(new Dog());
animals.add(new Dog());
animals.add(new Cow());
animals.add(new Dog());
animals.add(new Cow());
animals.add(new Dog());
animals.add(new Dog());

for (Animal animal : animals){
animal.sound();
}
}

输出:

haf
mooooo
haf
haf
haf
mooooo
mooooo
mooooo
haf
mooooo
haf
haf
mooooo
haf
mooooo
haf
haf

关于java - 在一行中调用所有相同命名的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22040736/

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