gpt4 book ai didi

java oop : Two extended classes that need to be called regardless of type

转载 作者:行者123 更新时间:2023-12-01 16:47:13 25 4
gpt4 key购买 nike

我无法理解 Java 中的以下 OOP 问题:

我有两个类扩展了一些基本的库类。

class myMovie extends Movie
{
int posi_x;
int posi_y;
...

myMovie(PApplet parent, String filename, int pposi_x, int pposi_y, float pangle, String player)
{
super(parent, filename);
...
}

int getFadeVal()
{
...
}

void fadeOut(int pms)
{
...
}
void fadeIn(int pms)
{
...
}

void exit()
{
...
}
}

class myImage extends PImage
{
// Will get a somehow similar implementation
}

这按预期工作。但现在我有一个“主循环”,它绘制所有这些不同的对象,因此我想简单地调用这些类的方法,而不询问列表中下一个对象的类型。

对我来说,这意味着我需要某种类型的头类,其中包含 myMovie 或 myImage。类似于:

class AnimationObject
{
var child;
...
}

然后在主循环中调用

AnimationObject[] ani_list;
foreach(AnimationObject ani in ani_list)
{
ani.draw();
}

当然问题是Java不知道像“var”这样的东西。我可以使用 Object,但随后我必须始终在主循环中强制转换对象的类型。

解决这个问题的正确方法是什么?与我的具体问题相比,我无法真正理解所有这些接口(interface)、抽象类等。哪种方法是首选且正确的方法? }

最佳答案

为此使用接口(interface):

public interface AnimationObject {
void draw();
}

public class myImage extends PImage implements AnimationObject {
[...]
}

public class myMovie extends Movie implements AnimationObject {
[...]
}

并在主循环中使用接口(interface):

AnimationObject[] ani_list;
foreach(AnimationObject ani : ani_list) {
ani.draw();
}

关于java oop : Two extended classes that need to be called regardless of type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321282/

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