-1

我如何使用接口方法?例如,我正在制作一个游戏引擎。我想要一个 JFrame 蓝图类型的想法,所以我有一个名为HFrame. 当一个 HFrame 对象被创建时,它将通过构造函数运行所有的设置和东西。当我调用时objectOfHFrame.display(),我如何获取display位于 HFrame 类内部的调用draw(),这将是paint(Graphics)由名为的接口类创建的一种方法Frame

我对这些问题的措辞很糟糕,请随时要求澄清!

谢谢 :)

编辑:很抱歉造成混乱,我确实说过我很讨厌这种事情......让我们使用 Thread 示例,实现 Runnable 来创建 run() 方法。Runnable 在类中创建 run() 方法。然后一个 Thread 对象接受一个实现 runnable 的类,并调用 run()。1)线程对象如何知道该类实现了可运行,以及 2)有没有办法让像 Thread 这样的类调用像 Run 这样的方法而不将类传递给该 Thread 对象?

编辑 2:再次抱歉,我很烂 -_- 好的,在那个 #2.... 制作线程对象时,您调用Thread t = new Thread(objectOfClassImplementingRunnable);. 我的问题是:是否有可能,可以说创建一个名为 HFrame 的类的对象,它调用一个名为 的方法draw(),就像 Thread 一样,但run()没有传递objectOfClassImplementingAnotherInterface? 如果没有,如果传递的对象实现了 FRAME,如何让 HFrame 类知道?

4

1 回答 1

1

是的,你使用的术语很有趣,对我来说听起来很希腊,但我会试着猜测你的意思。

我假设您创建了一个HFrame扩展类JFrame。你添加了一个方法display()到你的HFrame. (您可能不需要这样做,而只需使用现有方法objectOfHFrame.setVisible(true);

当一个框架可见时,它将启动事件链,最终将导致该框架(及其所有子级)的paint(Graphics g)方法被调用。你不用担心,它是自动的。

我不明白接口与此有什么关系;以上是类,而不是接口。

如果我错误地将您的语言翻译成 Java,请随时纠正我。我强烈建议在开始编码之前阅读一些 101 类型的教程。

编辑:啊,好的,根据您的编辑,我完全错了。等等……首先需要更多的翻译。

让我们使用 Thread 示例,实现 Runnable 来创建 run() 方法

这听起来像是挑剔,但实现一个接口并不会创建任何方法;如果方法不存在,它只会强制编译器失败。(虽然如果你问得好,IDE实际上可能会为你创建一个方法:-)

1)线程对象怎么知道类实现了runnable

这就是强类型语言的美妙之处。给 Thread 一个不实现 Runnable 的类来运行会导致编译错误。编译器足够强大,可以捕捉到这一点。如果不是,Java 也有这种语法:if (object instanceof Runnable){...}

2)有没有办法让像 Thread 这样的类调用像 Run 这样的方法而不将类传递给该 Thread 对象?

您的意思是,可以在不指定要启动的 Runnable 对象的情况下启动线程吗?不。它怎么知道哪个 runnable 启动,而不指向它?(顺便说一句,我记得最后一个线程也实现了 Runnable,所以理论上可以子类化一个线程,然后让它自己运行,尽管恕我直言是糟糕的设计)。

编辑 2. 好的,我的大脑刚刚融化。您可能想发布一些伪代码,或查找装饰器模式。

于 2013-10-07T19:38:15.027 回答