-4

このようなコードを実装できるかどうか知りたいですか?

public interface A {
public void execute();
}

public interface B { 
    public String execute(); 
}

class C implements A, B {
}
4

2 に答える 2

7

いいえ。これは許可されていません。コンパイラは、execute使用したい のバージョンを判断できないためです。

メソッドをオーバーロードする場合は、メソッドのパラメーターを変更する必要があります。たとえば、次のようになります。

   public void execute();

   public String execute(int someParam);
于 2012-05-20T09:42:26.917 に答える
2

いいえ、できません。

JLS では、各メソッドに異なる署名が必要です。

JLS 8.4 - 「クラスの本体で、オーバーライドと同等のシグネチャを持つ 2 つのメソッドをメンバーとして宣言すると、コンパイル時エラーになります (§8.4.2)」。

ここで、8.4.2 では、型消去後に同じメソッド名と同じ引数型を持つメソッドシグネチャとして、オーバーライドと同等のシグネチャを指定します。

于 2012-05-20T11:57:36.027 に答える