首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接口实现访问修饰符不像预期那样

接口实现访问修饰符不像预期那样
EN

Stack Overflow用户
提问于 2014-03-24 13:59:48
回答 2查看 87关注 0票数 0

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

给定接口

代码语言:javascript
复制
interface Flyer{
   void takeOff();
   boolean land();
}

那么,假设我有如下实现

代码语言:javascript
复制
class Aeroplane implements Flyer{
   public void takeOff(){
   ...
   }
   //insert code here
       return true;
   }  
}

要插入的代码是public boolean land(){,它声明以下是不正确的boolean land(){

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-24 14:05:45

“接口将该方法定义为包私有”

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

代码语言:javascript
复制
interface Flyer{
   void takeOff();
   boolean land();
}

与此等价

代码语言:javascript
复制
interface Flyer{
   public void takeOff();
   public boolean land();
}

这是非法

代码语言:javascript
复制
interface Flyer{
   private void takeOff();
   private boolean land();
}

如下所示:

代码语言:javascript
复制
interface Flyer{
   protected void takeOff();
   protected boolean land();
}

两个人都不会编译。

票数 3
EN

Stack Overflow用户

发布于 2014-03-24 14:04:26

接口不将方法定义为包-私有。由接口声明的所有方法都是public。您与默认的访问修饰符混淆了。它确实是包--类是私有的,接口是public。因此,定义:

代码语言:javascript
复制
interface Flyer{
   void takeOff();
   void land();
}

绝对等同于

代码语言:javascript
复制
interface Flyer{
   public void takeOff();
   public void land();
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22611561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档