同じ名前のメソッドを持つ2つのインターフェースを実装するにはどうすればよいですか?

スティーブライリー

特定のインターフェイスのリストを取得するために、継承するインターフェイスのカスタムリストを宣言しようとしています(IInterfaceListを認識していますが、これは単なる例です)。私はDelphi2007を使用しているので、実際のジェネリックにアクセスできません(残念です)。

簡単な例を次に示します。

   ICustomInterfaceList = interface
      procedure Add(AInterface: IInterface);
      function GetFirst: IInterface;
   end;

   TCustomInterfaceList = class(TInterfacedObject, ICustomInterfaceList)
   public
      procedure Add(AInterface: IInterface);
      function GetFirst: IInterface;
   end;

   ISpecificInterface = interface(IInterface)
   end;

   ISpecificInterfaceList = interface(ICustomInterfaceList)
      function GetFirst: ISpecificInterface;
   end;

   TSpecificInterfaceList = class(TCustomInterfaceList, ISpecificInterfaceList)
   public
      function GetFirst: ISpecificInterface;
   end;

TSpecificInterfaceListはコンパイルされません:

E2211「GetFirst」の宣言がインターフェース「ISpecificInterfaceList」の宣言と異なります

理論的にはTCustomInterfaceListを使用できると思いますが、使用するたびに「GetFirst」をキャストする必要はありません。私の目標は、基本クラスの動作を継承し、「GetFirst」をラップする特定のクラスを作成することです。

どうすればこれを達成できますか?

ありがとう!

デビッド・ヘファーナン

ISpecificInterfaceList3つのメソッドを定義します。彼らです:

procedure Add(AInterface: IInterface);
function GetFirst: IInterface;
function GetFirst: ISpecificInterface;

2つの関数は同じ名前を共有しているため、コンパイラがどちらがどちらであるかを識別できるようにする必要があります。

メソッド解決句を使用します。

TSpecificInterfaceList = class(TCustomInterfaceList, ISpecificInterfaceList)
public
  function GetFirstSpecific: ISpecificInterface;
  function ISpecificInterfaceList.GetFirst = GetFirstSpecific;
end;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

同じ名前でパラメータが異なる2つのJNIメソッドを実装するにはどうすればよいですか?

分類Dev

彼らは同じインターフェイスを実装しますように両方とも同じ名前、署名および戻り値の型振る舞いを持つメソッドを持っている2つのクラスを作る方法

分類Dev

ctrl-clickは、クリックしたメソッドの宣言に移動します。1つの実装を持つインターフェースの場合、その実装に直接行くにはどうすればよいですか?

分類Dev

異種クラスのインスタンスを循環させて、同じ名前とパラメーターを持つメソッドを呼び出すにはどうすればよいですか?

分類Dev

同じメソッドを持つクラスに2つのインターフェースを実装します。どのインターフェイスメソッドがオーバーライドされますか?

分類Dev

protoファイルに同じ名前の2つのメソッドを追加するにはどうすればよいですか?

分類Dev

2つのインターフェイスを実装するクラスから2つのインターフェイスで定義されたパラメータとメソッドにアクセスするにはどうすればよいですか?

分類Dev

ConsumerSeekAwareインターフェースを実装する際に、「両方のメソッドが同じ消去を持っているが、どちらもオーバーライドしていない」という警告を抑制するにはどうすればよいですか。

分類Dev

同じメソッド名を持つ2つのインターフェース-メソッドの実装

分類Dev

同じメソッド名を持つ2つのインターフェース-メソッドの実装

分類Dev

2つのインターフェースを持つインスタンスをメソッドが受け入れるようにするにはどうすればよいですか?

分類Dev

Java 8では、同じ名前のメソッドで2つのインターフェースを実装します。最初のメソッドには本体がなく、2番目のメソッドには本体があります。

分類Dev

インターフェイスのデフォルトメソッドを実装するにはどうすればよいですか?

分類Dev

同じインターフェースの2つの具体的な実装を取り入れたコントローラーコンストラクターをLaravelで作成するにはどうすればよいですか?

分類Dev

同じメソッドを持つ複数のインターフェースを実装する

分類Dev

2つの異なるインターフェイスの2つのメソッドで同じ名前、1つの実装ではないのはなぜですか?

分類Dev

別のインターフェイスのスライスを返すメソッドを持つインターフェイスを宣言するにはどうすればよいですか?

分類Dev

同じインターフェイスを実装する2つのクラスの双方向アダプターを作成するにはどうすればよいですか?

分類Dev

2つのIDインターフェイスを実装するときに競合を修正するにはどうすればよいですか?

分類Dev

Azure Active Directoryグラフクライアントを使用して、Azure B2Cで同じユーザー名\メールアドレスを持つすべてのユーザーを検索するにはどうすればよいですか?

分類Dev

入力または戻り値の型にインターフェイスの参照を持つメソッドでインターフェイスを使用するにはどうすればよいですか?

分類Dev

インターフェイスを実装するクラスにあるメソッドを、そのインターフェイスのタイプのオブジェクトで呼び出すにはどうすればよいですか?

分類Dev

Objective-CのinitXXXメソッドを同じタイプの引数を持つXamarin.iOSのコンストラクターにバインドするにはどうすればよいですか?

分類Dev

インターフェイスを動的に実装するクラスからメソッドを取得するにはどうすればよいですか?

分類Dev

terraformを使用して、紺碧のリスト/カウントを使用して、一意で同一でない名前を持つ同じタイプの複数のリソースを作成するにはどうすればよいですか?

分類Dev

2つ以上の型の和集合のインターフェイスを実装するにはどうすればよいですか?

分類Dev

同じ列名を持つデータフレームの列の名前を変更するにはどうすればよいですか?

分類Dev

List <インターフェイスを実装するオブジェクト>をメソッドに渡すにはどうすればよいですか?

分類Dev

同じインターフェースを持つクラスが類似しているが異なるメソッドシグネチャを持っている場合はどうすればよいですか?

Related 関連記事

  1. 1

    同じ名前でパラメータが異なる2つのJNIメソッドを実装するにはどうすればよいですか?

  2. 2

    彼らは同じインターフェイスを実装しますように両方とも同じ名前、署名および戻り値の型振る舞いを持つメソッドを持っている2つのクラスを作る方法

  3. 3

    ctrl-clickは、クリックしたメソッドの宣言に移動します。1つの実装を持つインターフェースの場合、その実装に直接行くにはどうすればよいですか?

  4. 4

    異種クラスのインスタンスを循環させて、同じ名前とパラメーターを持つメソッドを呼び出すにはどうすればよいですか?

  5. 5

    同じメソッドを持つクラスに2つのインターフェースを実装します。どのインターフェイスメソッドがオーバーライドされますか?

  6. 6

    protoファイルに同じ名前の2つのメソッドを追加するにはどうすればよいですか?

  7. 7

    2つのインターフェイスを実装するクラスから2つのインターフェイスで定義されたパラメータとメソッドにアクセスするにはどうすればよいですか?

  8. 8

    ConsumerSeekAwareインターフェースを実装する際に、「両方のメソッドが同じ消去を持っているが、どちらもオーバーライドしていない」という警告を抑制するにはどうすればよいですか。

  9. 9

    同じメソッド名を持つ2つのインターフェース-メソッドの実装

  10. 10

    同じメソッド名を持つ2つのインターフェース-メソッドの実装

  11. 11

    2つのインターフェースを持つインスタンスをメソッドが受け入れるようにするにはどうすればよいですか?

  12. 12

    Java 8では、同じ名前のメソッドで2つのインターフェースを実装します。最初のメソッドには本体がなく、2番目のメソッドには本体があります。

  13. 13

    インターフェイスのデフォルトメソッドを実装するにはどうすればよいですか?

  14. 14

    同じインターフェースの2つの具体的な実装を取り入れたコントローラーコンストラクターをLaravelで作成するにはどうすればよいですか?

  15. 15

    同じメソッドを持つ複数のインターフェースを実装する

  16. 16

    2つの異なるインターフェイスの2つのメソッドで同じ名前、1つの実装ではないのはなぜですか?

  17. 17

    別のインターフェイスのスライスを返すメソッドを持つインターフェイスを宣言するにはどうすればよいですか?

  18. 18

    同じインターフェイスを実装する2つのクラスの双方向アダプターを作成するにはどうすればよいですか?

  19. 19

    2つのIDインターフェイスを実装するときに競合を修正するにはどうすればよいですか?

  20. 20

    Azure Active Directoryグラフクライアントを使用して、Azure B2Cで同じユーザー名\メールアドレスを持つすべてのユーザーを検索するにはどうすればよいですか?

  21. 21

    入力または戻り値の型にインターフェイスの参照を持つメソッドでインターフェイスを使用するにはどうすればよいですか?

  22. 22

    インターフェイスを実装するクラスにあるメソッドを、そのインターフェイスのタイプのオブジェクトで呼び出すにはどうすればよいですか?

  23. 23

    Objective-CのinitXXXメソッドを同じタイプの引数を持つXamarin.iOSのコンストラクターにバインドするにはどうすればよいですか?

  24. 24

    インターフェイスを動的に実装するクラスからメソッドを取得するにはどうすればよいですか?

  25. 25

    terraformを使用して、紺碧のリスト/カウントを使用して、一意で同一でない名前を持つ同じタイプの複数のリソースを作成するにはどうすればよいですか?

  26. 26

    2つ以上の型の和集合のインターフェイスを実装するにはどうすればよいですか?

  27. 27

    同じ列名を持つデータフレームの列の名前を変更するにはどうすればよいですか?

  28. 28

    List <インターフェイスを実装するオブジェクト>をメソッドに渡すにはどうすればよいですか?

  29. 29

    同じインターフェースを持つクラスが類似しているが異なるメソッドシグネチャを持っている場合はどうすればよいですか?

ホットタグ

アーカイブ