でインターフェイスメソッドを実装するためのエラーを取得:Javaは、私はこのコードをコンパイルすると、弱いアクセス
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方法が考えられてインタフェースで宣言された方法パブリック?
メソッドとしてクラスラクダに
getGait()
の実装を変更暗黙のうちに 'public'です。それが言語の仕組みです。このインタフェースを実装するクラスでは、メソッドのアクセス修飾子について明示的に指定する必要があります。あなたのケースでは 'String getGait()'は 'protected'なので、エラーメッセージです。 – mreこのエラーは自明ですが、CamelクラスのgetGait()をpublicにする必要があります。 – Shark
@mre ... getGaitメソッドは実際にはデフォルトの可視性を持っています... package-private ... protectedではありません。 –