Java 接口实现访问修饰符不符合预期

Java 接口实现访问修饰符不符合预期,java,access-modifiers,Java,Access Modifiers,我遇到了一个接口实现的例子,我无法理解,因为文本中没有任何关于答案的推理,所以希望这里有人能帮忙 给定接口 interface Flyer{ void takeOff(); boolean land(); } 那么假设我有一个实现,如下所示 class Aeroplane implements Flyer{ public void takeOff(){ ... } //insert code here return true; } }

我遇到了一个接口实现的例子,我无法理解,因为文本中没有任何关于答案的推理,所以希望这里有人能帮忙

给定接口

interface Flyer{
   void takeOff();
   boolean land();
}
那么假设我有一个实现,如下所示

class Aeroplane implements Flyer{
   public void takeOff(){
   ...
   }
   //insert code here
       return true;
   }  
}
给我的插入代码是
public boolean land(){
并声明以下内容不正确
boolean land(){


当接口将方法定义为
package private
,当然是
booleanland()时,为什么我需要使用
public
{
应该实现接口,还是我遗漏了什么?

接口没有将方法定义为包私有。接口声明的所有方法都是
公共的
。您对默认访问修饰符感到困惑。对于类,它确实是包私有的,但是对于接口,它是
公共的
。因此,定义:

interface Flyer{
   void takeOff();
   void land();
}
绝对等同于

interface Flyer{
   public void takeOff();
   public void land();
}

“接口已将该方法定义为包专用”

根据定义,接口中声明的所有方法都是公共的。这是无法避免的

这个

相当于这个

interface Flyer{
   public void takeOff();
   public boolean land();
}
这是非法的:

interface Flyer{
   private void takeOff();
   private boolean land();
}
事实上:

interface Flyer{
   protected void takeOff();
   protected boolean land();
}

两者都不会编译。

Void不是布尔值。此外,接口是隐式公共的,这是接口的要点。很抱歉,这是我的错误…已编辑..“接口已将方法定义为包私有”.接口中声明的方法根据定义是公开的。没有办法绕过它。啊…这很有意义,鬼鬼祟祟…谢谢你的帮助!谢谢你的帮助!是的,很好。这就是为什么我删除了我的评论,希望你不会看到它。你的编辑使它更清晰。
interface Flyer{
   protected void takeOff();
   protected boolean land();
}