Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类必须声明为抽象或实现抽象方法:Intellij错误?_Java_Intellij Idea - Fatal编程技术网

Java 类必须声明为抽象或实现抽象方法:Intellij错误?

Java 类必须声明为抽象或实现抽象方法:Intellij错误?,java,intellij-idea,Java,Intellij Idea,我做了一个抽象的类 public abstract class AuraSensei { abstract boolean has(); } 但我得到了错误(见上文);需要实现抽象方法。这正是我在这段代码中所做的 public class MariaAura extends AuraSensei { boolean has() { return false; } } 这是IDE INTELLIJ想法的错还是我太愚蠢了?如何修复此问题?如果要在另一个包中实现抽象方

我做了一个抽象的类

public abstract class AuraSensei {
   abstract boolean has();
}
但我得到了错误(见上文);需要实现抽象方法。这正是我在这段代码中所做的

public class MariaAura extends AuraSensei {
   boolean has() {
      return false;
   }
}

这是IDE INTELLIJ想法的错还是我太愚蠢了?如何修复此问题?

如果要在另一个包中实现抽象方法,则需要对其进行
保护,以便子类可以看到它。否则,就好像您在声明一个单独的方法而不重写抽象方法一样


这就是为什么您应该始终使用
@Override
注释标记方法重写的原因之一。

它们是否在同一个包中?一个是X.Data,另一个是X.Data.Objects。您需要确保该类已实现,如果问题仍然存在,快速重新启动IntelliJ可能最终会解决问题。我重新启动了两次。我现在将重新启动Linux。当我使用Ctrl+I时,Intellj找不到任何实现方法。包结构确实是个问题,但我到底需要保护什么?受保护的布尔has(){return false;}不起作用。@Franz kun
protected
表示它对其包和任何子类都可见。您必须(至少)使它们都受到保护。请比“不起作用”更具体一些。谢谢。现在,我也将protected添加到了主类中,它确实起作用了。您还可以将该方法的可见性
设置为public
protected
是非常不必要的,除非它只是直接与超类交互(我猜他希望它与外部程序交互,而不仅仅是内部).@HovercraftFullOfEels,这毫无意义。您忘了受保护的
是什么意思了吗?