- PR -

インターフェイスの同名メソッド

1
投稿者投稿内容
ぱう
会議室デビュー日: 2008/01/22
投稿数: 5
投稿日時: 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/08
投稿数: 7
投稿日時: 2008-01-24 17:03
ぱうさんこんにちは。

引用:

ぱうさんの書き込み (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() { ... }
}

とできるのですが。こんな状況はあまりないと思うものの、インターフェイスの
メソッド名は注意して命名する必要がある、ということでしょうか。



出来ないですね。
インターフェースのメソッド名や戻り値の型はちゃんと設計しないといけないって事でしょう。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-01-24 17:18
引用:

ぱうさんの書き込み (2008-01-22 21:03) より:
こんな状況はあまりないと思うものの、インターフェイスの
メソッド名は注意して命名する必要がある、ということでしょうか。



そもそも、そのような複数のインターフェースを
同一のクラスでimplementsする必要があるか、という話だと思います。

どうしてもそのような複数のインターフェースを単一のクラスで
implementsする必要があるのだとすれば、それは設計がまずいのではないでしょうか。
ykSiR
会議室デビュー日: 2006/10/03
投稿数: 16
投稿日時: 2008-01-24 17:40
C#と違い、Javaでは明示的な実装はありません。

Javaではメソッドに対するnewキーワードも存在しないので明示的な実装が必要になる場面もないと思います。
ぱう
会議室デビュー日: 2008/01/22
投稿数: 5
投稿日時: 2008-01-25 14:40
皆様ご意見・ご指摘ありがとうございました。

既存のライブラリと新規開発のものを併用する場合など、全てコントロール
できない状況もあると思うので、逆にライブラリを提供する側になったとき
には注意しないといけないですね。
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2008-01-26 00:52
>既存のライブラリと新規開発のものを併用する場合
そうであったとしても、何種類ものインターフェイスを実装しなくてはならず、さらにメソッド名が重複するようなケースは万が一程度にしか起こりえないと思いますが…
1

スキルアップ/キャリアアップ(JOB@IT)