タグ付けされた質問 「interface」

インターフェースは、コンポーネントとの相互作用の指定されたポイントを指します。インターフェイスは、ハードウェアレベルとソフトウェアレベルの両方で適用できます。---これは、Java、C#、および同様の言語での単一継承の唯一の例外である、言語要素の「インターフェース」も指します。

11
インターフェイス定数の使用は何ですか?
私はJavaを学習していて、インターフェイスにフィールドがあり、それが静的で最終的なフィールドであることがわかりました。今のところ、これらの例は見たことがありません。これらのインターフェース定数の使用例にはどのようなものがありますか。Java標準ライブラリで確認できますか?

11
インターフェースを明示的に実装する理由
それでは、インターフェイスを明示的に実装するための適切なユースケースは何でしょうか? それは、クラスを使用している人々がインテリセンスでそれらのメソッド/プロパティをすべて見る必要がないようにするためだけですか?
122 c#  interface 

12
Javaインターフェイスのオプションメソッド
私の理解では、Javaでインターフェースを実装する場合、そのインターフェースで指定されたメソッドは、そのインターフェースを実装するサブクラスで使用する必要があります。 Collectionインターフェースなどの一部のインターフェースには、オプションとしてコメント化されているメソッドがあることに気づきましたが、これは正確にはどういう意味ですか?インターフェイスで指定されたすべてのメソッドが必要だと思ったので、少しスローされましたか?
120 java  methods  interface 

4
ジェネリック基本クラスから継承し、制約を適用して、C#でインターフェイスを実装する
これは構文の質問です。ジェネリック基本クラスから継承し、型パラメーターの1つに制約を適用しているジェネリッククラスがあります。派生クラスにインターフェイスを実装することも必要です。私の人生では、正しい構文を理解できていないようです。 これは私が持っているものです: DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar { ... } 最初に頭に浮かんだのはこれです。 DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar, IFoo { ... } しかし、これはT2がIFooを実装するためにDerivedFooではなくIBarとIFooの両方を実装する必要があるため、正しくありません。 私はグーグル、コロン、セミコロンの使用などを少し試しましたが、短くなりました。答えはきっと簡単です。

16
インターフェイスとクラスの違いは何ですか?また、クラスにメソッドを直接実装できるときにインターフェイスを使用する必要があるのはなぜですか?
これは非常に基本的な質問であることは承知していますが、面接官が非常に巧妙な方法で私に尋ねたので、私は無力でした:( 私はインターフェースの重要なまたは理論的な定義のみを知っており、私が取り組んだ多くのプロジェクトにそれを実装しました。しかし、これがなぜ、どのように役立つのか、本当にわかりません。 インターフェースについても理解できません。つまり、たとえば、 conn.Dispose();ついにブロック。しかし、そのクラスがIDisposableインターフェイス(SqlConnection)クラスを実装または継承していることはわかりません。どうすればメソッド名を呼び出すことができるのでしょうか。また、同じことですが、Disposeメソッドがどのように機能するのか理解していません。すべてのインターフェイスメソッドに対して、独自の実装で関数本体を実装する必要があるためです。それでは、インターフェースはどのように受け入れられ、契約として命名されますか?これらの質問は今まで心の中にあり続けていましたが、率直に言って、自分の質問を理解できる形で説明する良いスレッドは見たことがありません。 MSDNはいつものように非常に恐ろしく見え、1行も明確ではありません(ハイレベルの開発に携わっている皆さん、親切に言い訳をしてください。コードや記事は、それを見る人の心に届くはずなので、他の多くの人が言うように、MSDN使用されません)。 インタビュアーは言った: 彼には5つのメソッドがあり、クラスに直接実装して喜んでいますが、抽象クラスまたは抽象インターフェースを使用する必要がある場合、どちらを選択するのか、そしてその理由は何ですか。抽象クラスとインターフェースの両方の長所と短所についてさまざまなブログで読んだすべてのものに彼は答えましたが、彼は確信していません、彼は一般的に「なぜインターフェース」を理解しようとしています。「なぜ抽象クラス」は、同じメソッドを1回だけ実装でき、それを変更しない場合でも、一般に。 ネットのどこにも、インターフェースとその機能について明確に説明してくれる記事はありませんでした。私はそれらの多くのプログラマーの1人ですが、まだインターフェースについては知りませんが(私は使用した理論と方法を知っています)、明確に理解していることに満足していません。
117 c#  class  oop  interface  abstraction 


10
JavaのインターフェースとHaskellの型クラス:違いと類似点?
Haskellを学んでいると、その型クラスに気づきました。これはHaskellから生まれた優れた発明であるはずです。 ただし、タイプクラスのWikipediaページ: プログラマーは、クラスに属するすべての型に存在しなければならない一連の関数名または定数名をそれぞれの型とともに指定することにより、型クラスを定義します。 私にとってはJavaのインターフェースにかなり近いようです(Wikipediaのインターフェース(Java)ページを引用): Javaプログラミング言語のインターフェースは、クラスが実装しなければならないインターフェース(一般的な意味で)を指定するために使用される抽象型です。 これらの2つはかなり似ています。型クラスは型の動作を制限し、インターフェイスはクラスの動作を制限します。 Haskellの型クラスとJavaのインターフェースの違いと類似点は何でしょうか、それとも根本的に異なるのでしょうか。 編集:私はhaskell.orgでさえそれらが類似していることを認めていることに気づきました それらが非常に類似している(またはそれらがそうである)場合、なぜ型クラスがそのような誇大広告で扱われるのですか? より多くの編集:うわー、とても多くの素晴らしい答え!コミュニティにどちらが最適かを判断させる必要があると思います。しかし、答えを読んでいる間、それらすべては、「型クラスができることはたくさんありますが、インターフェースがジェネリックに対応できないか、ジェネリックに対処する必要がある」とだけ言っているようです。私は疑問に思わずにはいられません、型クラスができないのにインターフェースができることはありますか?また、Wikipediaがtypeclassは元々1989年の論文「アドホックなポリモーフィズムをアドホックから少なくする方法」であると主張していることに気づきました。一方、Haskellはまだ揺りかごのままで、Javaプロジェクトは1991年に開始され、1995年に最初にリリースされました。 。では、タイプクラスがインターフェースに似ているのではなく、その逆に、インターフェースがタイプクラスの影響を受けたのではないでしょうか。これを支持または反証する文書/論文はありますか?すべての回答をありがとう、それらはすべて非常に啓発的です! すべての入力をありがとう!


5
ES6 /ノード4でインターフェースを作成する方法はありますか?
ES6はノード4で完全に利用できます。ES6には、のようにメソッドコントラクトを定義するためのインターフェイスの概念が含まれているかどうか疑問に思いましたMyClass implements MyInterface。 グーグルで多くを見つけることはできませんが、素晴らしいトリックや回避策があるかもしれません。


6
C#インターフェイスメソッドが抽象または仮想として宣言されていないのはなぜですか?
インターフェイスのC#メソッドは、virtualキーワードを使用せずに宣言され、overrideキーワードを使用せずに派生クラスでオーバーライドされます。 これには理由がありますか?私はそれが単に言語の便宜であると思います、そして明らかにCLRはカバーの下でこれを処理する方法を知っています(メソッドはデフォルトでは仮想ではありません)が、他の技術的な理由はありますか? 以下は、派生クラスが生成するILです。 class Example : IDisposable { public void Dispose() { } } .method public hidebysig newslot virtual final instance void Dispose() cil managed { // Code size 2 (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } // end of method Example::Dispose メソッドがvirtual finalILで宣言されていることに注意してください。

2
Javaクラスが実装されたインターフェースから注釈を継承しないのはなぜですか?
私はGuiceのAOPを使用していくつかのメソッド呼び出しをインターセプトしています。私のクラスはインターフェースを実装しています。Guiceが適切なメソッドを選択できるように、インターフェースメソッドに注釈を付けたいと思います。Inheritedのjavaドキュメントに記載されているように、アノテーションタイプにInheritedアノテーション実装クラスでアノテーションが付けられていても、アノテーションは継承されません。 また、このメタ注釈は注釈がスーパークラスから継承されるだけであることにも注意してください。実装されたインターフェースの注釈は効果がありません。 これの理由は何でしょうか?オブジェクトのクラスが実行時に実装するすべてのインターフェースを知ることはそれほど難しいことではないので、この決定の背後には十分な理由があるはずです。


2
インターフェース定数の長所と短所[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 この質問を改善する PHPインターフェースを使用すると、インターフェースで定数を定義できます。 interface FooBar { const FOO = 1; const BAR = 2; } echo FooBar::FOO; // 1 実装クラスでは、これらの定数が自動的に使用可能になります。例: class MyFooBar implement FooBar { } echo MyFooBar::FOO; // 1 これに対する私自身の見解は、グローバルはすべて悪であるということです。しかし、インターフェイス定数にも同じことが当てはまるのでしょうか。ことを考えるとインタフェースに対してコーディングすることは一般的に良い習慣とみなされ、インタフェース定数にクラスのコンテキスト外で使用する許容される定数のみを使用していますか? 私はあなたの個人的な意見やインターフェイス定数を使用するかどうかを知りたいと思っていますが、主にあなたの答えの客観的な理由を探しています。これを投票タイプの質問にしたくない。インターフェース定数の使用が保守性に与える影響に興味があります。カップリング。または単体テスト。それはSOLID PHP とどのように関係していますか?PHPのグッドプラクティスと見なされているコーディング原則に違反していますか?あなたはアイデアを得ます… 注: Javaについても同様の質問があり、それらが悪い習慣である理由をいくつか挙げていますが、JavaはPHPではないので、PHPタグ内でもう一度質問するのは妥当だと感じました。
105 php  interface  constants 

2
Goインターフェースフィールド
Goでは、インターフェースがデータではなく機能を定義するという事実に精通しています。一連のメソッドをインターフェイスに配置しましたが、そのインターフェイスを実装するものに必要なフィールドを指定できません。 例えば: // Interface type Giver interface { Give() int64 } // One implementation type FiveGiver struct {} func (fg *FiveGiver) Give() int64 { return 5 } // Another implementation type VarGiver struct { number int64 } func (vg *VarGiver) Give() int64 { return vg.number } これで、インターフェースとその実装を使用できます。 // A function …
105 struct  interface  go 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.