【问题标题】:Can anyone help me with how to use interfaces?谁能帮助我如何使用接口?
【发布时间】:2015-06-29 02:06:45
【问题描述】:

这是一个 Minecraft 插件(虽然只是想弄清楚它们是如何工作的);因此,从某种意义上说,它只是为了练习。我不知道如何使用包 net.canarymod.api.entity 的类 Explosive 的实例 Explosive。任何有关我做错或应该做的事情的帮助将不胜感激。如果有任何问题,我正在使用 CanaryMod API。 代码如下:

import net.canarymod.api.entity.Explosive;

public class main {

    public static void main(String args[]){
        Explosive explosion = new Explosive();
        explosion.setPower(300);
        explosion.setCanDamageWorld(false);
        explosion.setCanDamageEntities(true);
        System.out.println(explosion.canDamageWorld());
    }
}

【问题讨论】:

  • 要学习如何使用接口,最好阅读教程或书籍或两者兼而有之。这个网站是这些学习工具的一个糟糕的替代品,因为它们比我们任何人都能够传播更多的深度和细节。

标签: java oop instantiation minecraft instances


【解决方案1】:

我同意看一个教程是个好主意,但我可以让你稍微了解一下接口的概念。

接口实际上并不是可以实例化为对象的类。它们不包含任何关于如何做任何事情的逻辑,它们只包含方法签名。另一个类可以实现一个接口,关键是实现类需要实现接口中提到的每个方法。

所以,以你的例子为例(我只是从我在这里用谷歌搜索到的东西,以及我对《我的世界》作为游戏的理解——我还没有为它写过模组):EnderCrystal、LargeFireball、TNTPrimed 和WitherSkull 都实现了爆炸。这意味着所有这四个都有自己的 Explosive 定义的各种方法的实现。他们每个人都可以做任何爆炸物可以做的事情,以及他们为自己定义的任何其他事情。

巧妙的是,由于接口的工作方式,您的代码非常接近工作。您需要做的就是更改第 6 行,以便创建一个新的其他类(您的爆炸甚至可以保持其类型,因为您选择这四个中的任何一个,它也将是爆炸类型,此外成为更具体的子类型)。

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 2023-03-30
    • 2022-08-10
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    相关资源
    最近更新 更多