- - PR -
インターフェイスの同名メソッド
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-01-22 21:03
例えば、
public interface I1 { int getSome(); } public interface I2 { String getSome(); } public class Foo implements I1, I2 { ... } のように、別のインターフェイスに同名で戻値の型が異なるメソッドがある場合、 これを実装することはできるのでしょうか? C#であれば明示的に、 public class Foo : I1, I2 { int I1.getSome() { ... } string I2.getSome() { ... } } とできるのですが。こんな状況はあまりないと思うものの、インターフェイスの メソッド名は注意して命名する必要がある、ということでしょうか。 | ||||
|
投稿日時: 2008-01-24 17:03
ぱうさんこんにちは。
出来ないですね。 インターフェースのメソッド名や戻り値の型はちゃんと設計しないといけないって事でしょう。 | ||||
|
投稿日時: 2008-01-24 17:18
そもそも、そのような複数のインターフェースを 同一のクラスでimplementsする必要があるか、という話だと思います。 どうしてもそのような複数のインターフェースを単一のクラスで implementsする必要があるのだとすれば、それは設計がまずいのではないでしょうか。 | ||||
|
投稿日時: 2008-01-24 17:40
C#と違い、Javaでは明示的な実装はありません。
Javaではメソッドに対するnewキーワードも存在しないので明示的な実装が必要になる場面もないと思います。 | ||||
|
投稿日時: 2008-01-25 14:40
皆様ご意見・ご指摘ありがとうございました。
既存のライブラリと新規開発のものを併用する場合など、全てコントロール できない状況もあると思うので、逆にライブラリを提供する側になったとき には注意しないといけないですね。 | ||||
|
投稿日時: 2008-01-26 00:52
>既存のライブラリと新規開発のものを併用する場合
そうであったとしても、何種類ものインターフェイスを実装しなくてはならず、さらにメソッド名が重複するようなケースは万が一程度にしか起こりえないと思いますが… |
1