Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基类中的方法能否调用从它派生的方法???(有点像回调)_Java - Fatal编程技术网

Java 基类中的方法能否调用从它派生的方法???(有点像回调)

Java 基类中的方法能否调用从它派生的方法???(有点像回调),java,Java,我在做一个游戏,每个屏幕上都有一些相同的东西,也有一些不同的东西。 我有一个名为cInteractive的类,它具有基本操作。然后,我创建以下派生自它的类之一,cParkPieces1、cParkPieces2或cParkPieces4。 我希望这样,当我从cInteractive调用update时,它将从继承它的CLS调用update函数。 示例代码 cInteractive cInteractive Pieces; // my base class switch(id)

我在做一个游戏,每个屏幕上都有一些相同的东西,也有一些不同的东西。 我有一个名为cInteractive的类,它具有基本操作。然后,我创建以下派生自它的类之一,cParkPieces1、cParkPieces2或cParkPieces4。 我希望这样,当我从cInteractive调用update时,它将从继承它的CLS调用update函数。 示例代码

cInteractive

 cInteractive Pieces; // my base class

     switch(id)
     {
      case 1:
        Pieces=new cParkPieces1(context);
        break;

      case 1:
        Pieces=new cParkPieces2(context);
        break;

      case 1:
        Pieces=new cParkPieces3(context);
        break;
}    
.....
....
 Pieces.Update(); // need to call update in cParkPeaces, not cInteractive

听起来你想使用一个界面;接口保证子类将有一个方法,但允许它们提供这样做的代码。例如,您可以有一个动物界面:

interface Animal {
public String makeNoise();
}

public class Dog implements Animal {
    public String makeNoise() { return "bark"; }
}

public class Cat implements Animal {
    public String makeNoise() { return "meow"; }
}
都是一种
动物
,都有
制造噪音
功能,但工作方式不同。你可以说:
animalfido=newdog();fido.makeNoise()绝对没有问题;fido既是一只
,又是一只
动物
,这取决于你需要什么

有关更多信息,请参阅

实际上,我制作了一个最终必须输出到GUI的游戏。我想使使用
System.out.println()
和渲染带有图像和健康栏的窗口之间的切换变得容易。我创建了一个名为
UserInterface
,并为其提供了方法
handleText(字符串文本)
handleDisplay(游戏状态)
。然后我使用了以下方法:

UserInterface ui = new UserInterface() {
    public void handleText(String text) { System.out.println(text) };
    public void handleDisplay { 
        System.out.println(state.stats.toString()); 
        System.out.println(state.board.toString());
    }
};

然后,当我需要使用GUI时,我将该行更改为
userInterface ui=new GameWindow()
。它工作得绝对完美,我立即从渲染到控制台,在可调整大小的窗口中绘制图像。只要知道类需要做什么,就使用接口,但不要真正关心它是如何做的。

继承就是这样给你的。可能的重复