Java 使用从接口创建的方法?

Java 使用从接口创建的方法?,java,interface,game-engine,Java,Interface,Game Engine,如何使用接口方法?例如,我正在制作一个游戏引擎。我想要一个JFrame蓝图类型的想法,所以我有一个名为HFrame的类。当创建HFrame的对象时,它将通过构造函数运行所有设置和内容。当我调用objectOfHFrame.display()时,如何让位于HFrame类内部的display调用draw(),它将是一种由名为Frame的接口类创建的paint(Graphics)方法 我对这些问题的措辞很糟糕,请随时要求澄清 谢谢:) 编辑: 抱歉搞混了,我说过我对这种事很差劲。。。。 让我们使用线程

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

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

谢谢:)

编辑: 抱歉搞混了,我说过我对这种事很差劲。。。。 让我们使用线程示例,实现Runnable来创建run()方法。Runnable在类中创建run()方法。然后,线程对象接受一个实现runnable的类,并调用run()。1) thread对象如何知道实现的类是可运行的,2)类thread有没有一种方法可以在不向该thread对象传递类的情况下调用类似Run的方法

编辑2: 再次抱歉,我很差劲-_- 好的,在那上面#2。。。。
创建线程对象时,调用
thread t=new thread(objectOfClassImplementingRunnable)。我的问题是:有没有可能,比如说,创建一个名为HFrame的类的对象,该类调用一个名为
draw()
的方法,就像线程那样,只使用
run()
,而不传递ClassingImplementingAnotherInterface的
对象?如果不是,您如何让HFrame类知道传递的对象是否实现了框架?

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

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

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

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

如果我把你的语言翻译成Java不正确,请随时纠正我。我强烈建议在开始编写代码之前阅读一些101类型的教程

编辑:啊,好吧,根据你的编辑,我全搞错了。等一下……首先需要更多的翻译

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

这听起来像是吹毛求疵,但实现接口不会创建任何方法;如果没有这些方法,它只会迫使编译器失败。(尽管如果你问得好,IDE实际上可能会为你创建一个方法:-)

1) thread对象如何知道类实现了runnable

这就是强类型语言的美妙之处。给线程一个不实现Runnable的类来运行,将导致编译错误。编译器足够强大,可以捕捉到这一点。如果不是,Java也有以下语法:
If(objectinstanceof Runnable){…}

2) 像Thread这样的类有没有一种方法可以在不向Thread对象传递类的情况下调用像Run这样的方法

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


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

您的问题是什么?你尝试过什么?不知道这个问题在问什么。接口是类实现方法的蓝图,你不一定要调用接口的方法,但是,实现接口的类必须具有接口中定义的所有方法。1)因为它具有可运行类型,java是强类型语言。2) 不要问“可运行类型”是什么意思,如何做到这一点?然后看编辑#2…哈哈,我明白了。。。。很接近。实际上,我对编程和其他方面都很在行,但是我的。。。提问技巧是需要的-u-display()还有其他原因,但我想要的是,除了框架边框本身之外,HFrame类是完全可定制的。所以我想的是让HFrame.display()调用前面提到的draw()方法,这样任何使用引擎的人都可以更改绘制的内容。更清楚DAh,我明白了,你正试图实现装饰模式。。。某种程度上。(除了Decorator使用合成(通常更高级),而不是继承,用户重写
paint()
update()已经可以完成您尝试的操作)
或一大堆其他方法。但是,我不知道你的设计,可能需要一个不同的插件。我只是有一天站起来,决定制作一个游戏引擎,对任何人都有用,但更具体地说,是为我正在创建的游戏。所以我真的不确定如何去做tbh,所以我从这里开始,用接口等y的回答很有帮助,请接受/投票,我是新来的,需要这个。顺便说一句,Java中的“类型”和“类”这两个术语大致上是同义词(此时我只允许对我自己的答案发表评论,但这与对你的问题的评论有关)