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();
}