编译此代码时:
interface Rideable {
String getGait();
}
public class Camel implements Rideable {
int x = 2;
public static void main(String[] args) {
new Camel().go(8);
}
void go(int speed) {
System.out.println((++speed * x++)
+ this.getGait());
}
String getGait() {
return " mph, lope";
}
}
我收到以下错误:
Camel.java:13: error: getGait() in Camel cannot implement getGait() in Rideable
String getGait() {
^
attempting to assign weaker access privileges; was public
1 error
接口中声明的getGait方法如何被公开?
答案 0 :(得分:34)
在接口内声明的方法是隐式public
。并且在接口中声明的所有变量都是隐式public static final
(常量)。
public String getGait() {
return " mph, lope";
}
答案 1 :(得分:8)
interface
中的所有方法都隐式public
,无论您是否明确声明它。请参阅Java Tutorials Interfaces section。
答案 2 :(得分:5)
interface
中的所有方法都隐含public
。但如果没有明确提及public,则在类中,它只有包可见性。通过覆盖,您只能提高可见性。你无法降低能见度。因此,将类驼峰中的getGait()
的实现修改为
public String getGait() {
return " mph, lope";
}
答案 3 :(得分:0)
默认情况下,接口字段是公共的,静态的和最终的,方法是公共的和抽象的
因此,在实现接口时,函数调用应为 public 功能应为
public String getGait() {
return " mph, lope";
}
答案 4 :(得分:-1)
将骆驼类(Rideable的实现类)中的getGait()设置为公共。
public String getGait() {
return " mph, lope";
}