java oop:无论类型如何,都需要调用的两个扩展类



我无法解决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,但是我必须始终在主循环中强制转换对象的类型。

解决这个问题的正确方法是什么?与我的确切问题相比,我无法真正理解所有这些接口、抽象类等。哪种方法最好且正确? }

为此使用接口:

public interface AnimationObject {
    void draw();
}
public class myImage extends PImage implements AnimationObject {
    [...]
}
public class myMovie extends Movie implements AnimationObject {
    [...]
}

在您的主循环中使用接口:

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

最新更新