Java 基类中的方法能否调用从它派生的方法???(有点像回调)
我在做一个游戏,每个屏幕上都有一些相同的东西,也有一些不同的东西。 我有一个名为cInteractive的类,它具有基本操作。然后,我创建以下派生自它的类之一,cParkPieces1、cParkPieces2或cParkPieces4。 我希望这样,当我从cInteractive调用update时,它将从继承它的CLS调用update函数。 示例代码Java 基类中的方法能否调用从它派生的方法???(有点像回调),java,Java,我在做一个游戏,每个屏幕上都有一些相同的东西,也有一些不同的东西。 我有一个名为cInteractive的类,它具有基本操作。然后,我创建以下派生自它的类之一,cParkPieces1、cParkPieces2或cParkPieces4。 我希望这样,当我从cInteractive调用update时,它将从继承它的CLS调用update函数。 示例代码 cInteractive cInteractive Pieces; // my base class switch(id)
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()
。它工作得绝对完美,我立即从渲染到控制台,在可调整大小的窗口中绘制图像。只要知道类需要做什么,就使用接口,但不要真正关心它是如何做的。继承就是这样给你的。可能的重复