我遇到了一个界面实现的例子,我不知道如何处理,文本没有任何理由来答案,所以希望有人可以帮助。
给定界面
interface Flyer{
void takeOff();
boolean land();
}
然后假设我有一个如下实现
class Aeroplane implements Flyer{
public void takeOff(){
...
}
//insert code here
return true;
}
}
我要给的插入代码是
public boolean land(){
并声明以下内容不正当boolean land(){
当接口将方法定义为public
时,为什么我需要拥有package-private
,当然boolean land(){
应该实现接口,或者我错过了什么?
答案 0 :(得分:4)
接口未将方法定义为包私有。接口声明的所有方法都是public
。您对默认访问修饰符感到困惑。对于类而言,它确实是包私有的,但对于接口而言是public
。所以,定义:
interface Flyer{
void takeOff();
void land();
}
绝对等同于
interface Flyer{
public void takeOff();
public void land();
}
答案 1 :(得分:3)
“接口已将方法定义为package-private”
接口中声明的所有方法都是公共的。没有办法解决这个问题。
此
interface Flyer{
void takeOff();
boolean 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();
}
两者都不会编译。