java pircbot无法从pircbot中超越最终方法

时间:2015-03-24 02:13:05

标签: java eclipse

您好我有关于pircbot的问题。我试图使用发送消息方法,但我有一个错误,我很困惑。

这是我的代码

 import org.jibble.pircbot.PircBot;


 public class sendMessage extends PircBot {


public sendMessage() {
    this.setName("user");
}

 public static void main(String[] args) throws Exception  {

sendMessage bot = new sendMessage();
bot.setVerbose(true);
bot.connect("irc.twitch.tv", 6667, "oauth:code");
bot.joinChannel("#channel");

public void sendMessage(String target, String message) {
    sendMessage(target, "hello");
}

}

它表示不能超越pircbot的最终方法。我不明白什么是错的。谁能帮助我理解为什么我会这样做?

3 个答案:

答案 0 :(得分:0)

声明为final的方法意味着无法覆盖它。因此,无论您扩展PircBot多少,都无法改变已提供的方法。有关final的详细信息,请参阅this教程。

不要试图扩展类,而是考虑使用组合。

此外,您似乎只想使用PircBot,那么为什么不按照提供的方式使用它呢?

PircBot bot = new PircBot();
bot.setName("user");
bot.setVerbose(true);
bot.connect("irc.twitch.tv", 6667, "oauth:code");
bot.joinChannel("#channel");
bot.sendMessage(target, message);

答案 1 :(得分:0)

此方法“sendMessage”:正在尝试覆盖其中一个PircBot Super Class,并且是最终的。您无法覆盖最终方法。看看Class PircBot Doc.

此外,您应该考虑将您的类“sendMessage”的名称更改为另一个,不要混淆构造函数和方法(等于Super类)。

此外,您的班级名称应采用良好做法,第一个字母为大写。 这是一个例子:

 public class MyBot extends PircBot {// changed here


    public MyBot() { // changed here
        this.setName("user");
    }

     public static void main(String[] args) throws Exception  {

    MyBot bot = new MyBot(); // changed here
    bot.setVerbose(true);
    bot.connect("irc.twitch.tv", 6667, "oauth:code");
    bot.joinChannel("#channel");

    //changed here
    public void sendMyMessage(String target) {
        sendMessage(target, "hello");
    }

    }

答案 2 :(得分:0)

sendMessage()中的

class PircBot确实是final

它有以下签名:

public final void sendMessage(String target, String message)

根本不需要覆盖它。您可以在代码中使用它。

bot.sendMessage(target, "hello");

您仍然需要提供target字符串,其定义如下

  

要发送到的频道或用户姓名的名称。