問題タブ [interface-implementation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
18034 参照

java - パフォーマンスやメモリなどに関して、Javaの「extends」と「implements」の違いは何ですか

パフォーマンスやメモリなどに関して、Javaでのextendsimplementsの違いは何ですか。たとえば、次のシナリオを考えてみましょう。

上記のシナリオ(1,2)の場合、 extends(子クラスの派生)とimplements(インターフェースの実装)の使用の違いは何ですか。パフォーマンス、メモリなどに関して。?

0 投票する
3 に答える
6224 参照

java - Java インターフェイス - コントラクトには正確には何が含まれていますか?

私は Java のインターフェースの価値を知っており、理解しています。インターフェイスにコーディングすると、インターフェイスを使用してコードを変更することなく、実装を変更できます。多くの場合、「契約」という用語はインターフェースに関連して使用されます。私が理解している方法は、インターフェイスがアプリケーションと実装の間の「契約」を定義していることです。

したがって、実装を作成するときは、契約を履行する必要があります。私の質問は、私が履行しなければならない契約の内容は正確には何ですか?

明らかに、少なくともインターフェイスと同じシグネチャを持つメソッドを提供する必要があります。それ以外の場合、コードはコンパイルされません。「契約」ってそれだけ?もっとあるべきだと思われる。

たとえば、インターフェイスのテストと特定の実装のテストの価値、またはその両方を行うことの価値について議論している記事を読んだことがあります。どの入力がどのような出力を期待するかを知るために、インターフェイスのテストを行うことには大きな価値があると思います。これもインターフェースの「契約」の一部になるように思えます。インターフェイスのすべての実装は、同じ入力から同じ出力を生成する必要があります。明らかに、このコントラクトをコードで強制する方法はありませんが、テスト ケースを通じて強制することはできます。ここで私の考えは間違っていますか?

最後に、実装が持つ副作用についてはどうでしょうか? ここでは、主に、実装の一部として発生する可能性のある永続性について話しています。操作の実行中にいくつかのレコードを DB に保存する実装があるとします。これはどういうわけかインターフェースの「契約」の一部になるのでしょうか? もしそうなら、どのようにこの契約を強制することができますか? インターフェイス レベルからは、実装が実際に何をしているのかわかりません。私が知っているのは、入力を与えることと、テストできる出力が得られることだけです。発生する永続性も「出力」と見なされますか? もしそうなら、これをどのようにテストして実施できるかわかりません。私は持続性無知の支持者なので、何かを持続する必要があることはわかっていましたが、方法がわかりません。それは永続化されます。ですから、何かが実際にいつ持続したかを知る方法がわかりません。単純な CRUD 操作ができるインターフェイスなら簡単かもしれませんが、もっと複雑なインターフェイスについて考えてみたいと思います。

私の質問が理にかなっており、誰かが良いフィードバックを提供できることを願っています. これについては一般的に説明したいと思いますが、何について話しているのか明確でない場合は、具体的な例を示すことができます。

0 投票する
1 に答える
3775 参照

c# - インターフェイス実装の「定義に移動」と同等のショートカット?

重複の可能性:
インターフェイスのメソッドの実装をすばやく見つけるにはどうすればよいですか?
具象型の定義に移動

関数の実装にすばやくジャンプしたい場合を除き、インターフェイスへのコーディングは優れています。

古き良き時代には、F12 (定義に移動) で直接そこに移動できましたが、もちろん今では、実装ではなく、インターフェイスの定義に移動するだけです。

複数の実装が存在する可能性があることを理解していますが、すべての呼び出しも含まれているにもかかわらず、手動でファイルを見つけるか、Ctrl-Shift-F を使用してすべての参照を検索するよりも簡単な方法はありますか? 「すべての参照を検索」でも同じ結果が得られます。

誰かが便利なメソッド/マクロを持っているかどうか疑問に思いましたか?

0 投票する
5 に答える
313 参照

c# - 抽象クラスのない実装とのインターフェース?

私はライブラリを書いていて、インターフェースが欲しい

実際には、Attach() と Detach() の実装はすべての ISkeleton で同じでなければなりません。したがって、本質的には次のようになります。

しかし、C# では多重継承が許可されていません。そのため、さまざまな問題の中で、ユーザーは Skeleton を実装するたびに Skeleton から継承することを覚えておく必要があります。

拡張メソッドを使用できます

しかし、私は持っている必要があります

共変ではなく、ユーザーが Attach() および Detach() メソッドをバイパスできるため、これは望ましくありません。

質問: 本当に抽象 Skeleton クラスを使用する必要がありますか、それともトリックやメソッドはありますか?

0 投票する
2 に答える
1006 参照

.net - スタックICollectionを実装しますが、ICollectionのメソッドがあります

に基づいてカスタムコレクションを作成しようとしていますStack<T>Stack<T>Visual Studioで[メタデータから]を見ると、がのメソッドをStack<T>実装ICollectionする必要があることを示していますが、代わりに、のメソッドを持っていると示されています。誰かがこれが事実である理由を説明できますか?ICollectionCopyTo(Array array, index)ICollection<T>CopyTo(T[] array, index)

Stack<T>かなり模倣したコレクションを作成しようとしています。スタックのように実装する場合、メソッドICollectionを使用する必要がありますが、私が本当に望んでいるのは、メソッドを使用することです。実装せずにこれを達成する方法はありますか?CopyTo(Array array, index)CopyTo(T[] array, index)Stack<T>ICollection<T>

0 投票する
2 に答える
602 参照

java - 「クラスは抽象的ではなく、抽象メソッドをオーバーライドしません...」という理由で、インターフェイスを実装するクラスが機能しません。間違いは何ですか?

Javaチュートリアルに「インターフェースの実装」の例があります。この例を繰り返しましたが、うまくいきません。RectanglePlusNetBeans は、クラス宣言の左側に誤りを示しています。そして間違いは:

rectangleplus.RectanglePlus は抽象ではなく、rectangleplus.Relatable の抽象メソッド isLargerThan(rectangleplus.Relatable) をオーバーライドしません。

私はチュートリアルに書かれているのと同じことをしました。なぜそれは間違いを示していますか?これが私のプロジェクトの実装です。

  1. プロジェクトの名前は ですRectanglePlus
  2. パッケージの名前はrectangleplus.

プロジェクトの最初のファイルは InterfaceRelatableです:

プロジェクトの 2 番目のファイルは、RectanglePlusヘルパー クラスを含むメイン クラスPointです。

チュートリアルの例で抽象化について何も言われていないのはなぜですか? チュートリアルの例は、問題なく動作するはずですか?

ありがとうございました。

0 投票する
3 に答える
1616 参照

java - この Java インターフェイスを実装するにはどうすればよいでしょうか?

私は現在、この問題の設計モードにいます:

事前定義されたスピーカー インターフェイスを実装します。Speaker をさまざまな方法で実装する 3 つのクラスを作成します。メイン メソッドがこれらのオブジェクトの一部をインスタンス化し、それらの機能をテストするドライバー クラスを作成します。

このプログラムを設計し、コーディング段階に移行するにはどうすればよいでしょうか。Speaker インターフェース・クラスを実装するために、これら 3 つのクラス (Politician、Lecturer、Pastor クラス) を使用したいと考えています。私が使用したい方法は次のとおりです。

public void speak(); public void announce (String str);

私の設計とコーディングでは、変数を宣言してオブジェクトを参照し、その変数に複数の参照を持たせるにはどうすればよいでしょうか?

0 投票する
3 に答える
8725 参照

c# - MVC4で、いくつかのインターフェイスを実装する必要があることを示し、エラーが発生しましたが、すでに完了しています

多言語性をサポートするために、独自のフィルター属性を作成しようとしています。アイデアは単純です。URLは言語を表します。

  • * http://host.ext/ en /rest_of_the_url*は英語で開きます
  • * http://host.ext/ hy /rest_of_the_url*はアルメニア語で開きます。

問題は、実行時にMultilingualActionFilterAttributeと表示されることです

エラーテキストは次のとおりです。「指定されたフィルターインスタンスは、IAuthorizationFilter、IActionFilter、IResultFilter、IExceptionFilterの1つ以上のフィルターインターフェイスを実装する必要があります。」

ここでは、グローバルフィルターとして使用しています。

ここで私はそれを定義しています。

0 投票する
8 に答える
2833 参照

c++ - Find unimplemented class methods

In my application, I'm dealing with a larger-size classes (over 50 methods) each of which is reasonably complex. I'm not worried about the complexity as they are still straight forward in terms of isolating pieces of functionality into smaller methods and then calling them. This is how the number of methods becomes large (a lot of these methods are private - specifically isolating pieces of functionality).

However when I get to the implementation stage, I find that I loose track of which methods have been implemented and which ones have not been. Then at linking stage I receive errors for the unimplemented methods. This would be fine, but there are a lot of interdependencies between classes and in order to link the app I would need to get EVERYTHING ready. Yet I would prefer to get one class our of the way before moving to the next one.

For reasons beyond my control, I cannot use an IDE - only a plain text editor and g++ compiler. Is there any way to find unimplemented methods in one class without doing a full linking? Right now I literally do text search on method signatures in the implementation cpp file for each of the methods, but this is very time consuming.