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 kunprotected
表示它对其包和任何子类都可见。您必须(至少)使它们都受到保护。请比“不起作用”更具体一些。谢谢。现在,我也将protected添加到了主类中,它确实起作用了。您还可以将该方法的可见性设置为public
,protected
是非常不必要的,除非它只是直接与超类交互(我猜他希望它与外部程序交互,而不仅仅是内部).@HovercraftFullOfEels,这毫无意义。您忘了受保护的是什么意思了吗?