2

これは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";
    }
}

(Oracleによると)コンパイルは失敗することがわかりましたが、私の意見では、出力は正常に生成されます。では、コンパイルに失敗した原因はどこにあるのでしょうか。乾杯

4

2 に答える 2

6

オーバーライドするメソッドの可視性を下げることはできません(インターフェイスメソッドはpublicデフォルトです)。代わりにこれを試してください。

public String getGait() {
    return " mph, lope";
}
于 2012-12-02T17:49:20.033 に答える
2

デフォルトのアクセスで定義getGaitしましたが、インターフェース定義では実装がである必要がありますpublic

public String getGait() {
于 2012-12-02T17:49:24.273 に答える