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

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

4
インターフェースで定義されたC#4オプションパラメーターがクラスの実装に適用されないのはなぜですか?
あなたがインターフェイス上でオプションのパラメータを指定した場合、私はC#4でのオプションのパラメータを持つことに気づいtは、ドン任意の実装クラスでそのパラメータのオプションを行う必要があります。 public interface MyInterface { void TestMethod(bool flag = false); } public class MyClass : MyInterface { public void TestMethod(bool flag) { Console.WriteLine(flag); } } したがって: var obj = new MyClass(); obj.TestMethod(); // compiler error var obj2 = new MyClass() as MyInterface; obj2.TestMethod(); // prints false オプションのパラメーターがこのように機能するように設計されている理由を誰かが知っていますか? 一方では、インターフェースで指定されたデフォルト値をオーバーライドする機能は便利だと思いますが、正直なところ、インターフェースでデフォルト値を指定できるかどうかは、実装の決定であるためわかりません。 一方、この切断は、具象クラスとインターフェースを常に交換して使用できるわけではないことを意味します。もちろん、これは実装でデフォルト値が指定されている場合は問題になりませんが、具体的なクラスをインターフェースとして公開している場合(たとえば、IOCフレームワークを使用して具体的なクラスを挿入する場合)、実際にはありません。呼び出し側は常にデフォルト値を提供する必要があるため、デフォルト値を持つポイント。


13
特性とインターフェース
私は最近PHPについて勉強しようとしていますが、自分が特性に夢中になっていることに気づきました。水平方向のコードの再利用の概念を理解しており、必ずしも抽象クラスから継承したくない。私が理解していないのは、トレイトとインターフェイスの重要な違いは何ですか? どちらを使用するかを説明する適切なブログ投稿または記事を検索してみましたが、これまでに見つけた例は、まったく同じように非常に似ているようです。
344 php  interface  traits 


11
Javaでのインターフェースの命名[終了]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 ほとんどのOO言語は、インターフェース名の前に大文字のIを付けています。なぜJavaはこれを行わないのですか?この規則に従わない理由は何でしたか? つまり、ユーザーインターフェイスとユーザー実装が必要な場合は、Javaで2つの選択肢があります。 クラス=ユーザー、インターフェース=ユーザーインターフェース クラス= UserImpl、インターフェース= User ほとんどの言語で: クラス=ユーザー、インターフェース= IUser 今、あなたは常にユーザー実装に最も説明的な名前を選ぶことができ、問題はなくなると主張するかもしれませんが、Javaは物事へのPOJOアプローチを推進しており、ほとんどのIOCコンテナーはDynamicProxiesを広範囲に使用しています。これら2つのことを合わせると、1つのPOJO実装で多くのインターフェースができることになります。 つまり、私の質問は次のように要約されていると思います。「特に、Javaフレームワークが向かっているように見える場所を考慮して、より広いインターフェース命名規則に従う価値はありますか?」

5
Javaのインターフェースと@インターフェースの違いは何ですか?
私は90年代後半に大学でJBuilderを使用して以来Javaに触れていなかったので、少し連絡が取れなくなっています。 、私の通常の.Net開発からのペースの変更について。 私はそれがインターフェースと@インターフェースの追加をサポートしていることに気付きました、@インターフェースとは何ですか、そしてそれは通常のインターフェースとどう違うのですか? public interface Test { } 対 public @interface Test { } 少し検索はしましたが、@ interfaceを参照するための有用な情報が見つかりませんでした。

12
Javaインターフェースのメソッドは、パブリックアクセス修飾子の有無にかかわらず宣言する必要がありますか?
Javaインターフェイスのメソッドは、publicアクセス修飾子の有無にかかわらず宣言する必要がありますか? もちろん、技術的には問題ではありません。interfaceis を実装するクラスメソッドは常にpublicです。しかし、より良い慣習は何ですか? Java自体はこれで一貫していません。たとえば、Collectionvs Comparable、またはFuturevsを参照してくださいScriptEngine。

13
Typescriptによるインターフェース型チェック
この質問は、TypeScriptを使用したクラス型チェックに直接類似しています タイプの変数がインターフェイスを実装しているかどうかを実行時に確認する必要があります。これが私のコードです: interface A{ member:string; } var a:any={member:"foobar"}; if(a instanceof A) alert(a.member); typescript playgroundにこのコードを入力すると、最後の行は「名前Aは現在のスコープに存在しません」というエラーとしてマークされます。しかし、そうではありません。名前は現在のスコープに存在します。var a:A={member:"foobar"};エディターからの不満なしに変数宣言を変更することもできます。Webを閲覧してSOで他の質問を見つけた後、インターフェイスをクラスに変更しましたが、オブジェクトリテラルを使用してインスタンスを作成できません。 タイプAがどのようにしてこのように消えてしまうのか疑問に思いましたが、生成されたJavaScriptを見ると問題が説明されています。 var a = { member: "foobar" }; if(a instanceof A) { alert(a.member); } Aはインターフェースとして表現されないため、実行時の型チェックはできません。 動的言語としてのJavaScriptにはインターフェースの概念がないことを理解しています。インターフェイスのタイプチェックを行う方法はありますか? typescript playgroundのオートコンプリートは、typescriptがメソッドを提供することさえ明らかにしますimplements。どうすれば使用できますか?

16
パラメータとしてのJavaパスメソッド
参照によってメソッドを渡す方法を探しています。Javaはパラメーターとしてメソッドを渡さないことを理解していますが、別の方法を入手したいと考えています。 インターフェースはメソッドをパラメーターとして渡す代わりに使用できると言われましたが、インターフェースが参照としてメソッドとして機能する方法がわかりません。私が正しく理解していれば、インターフェースは、定義されていない抽象的なメソッドのセットにすぎません。複数の異なるメソッドが同じパラメーターで同じメソッドを呼び出す可能性があるため、毎回定義する必要があるインターフェースを送信したくありません。 私が達成したいのはこれに似たものです: public void setAllComponents(Component[] myComponentArray, Method myMethod) { for (Component leaf : myComponentArray) { if (leaf instanceof Container) { //recursive call if Container Container node = (Container) leaf; setAllComponents(node.getComponents(), myMethod); } //end if node myMethod(leaf); } //end looping through components } 次のように呼び出されます: setAllComponents(this.getComponents(), changeColor()); setAllComponents(this.getComponents(), changeSize());
277 java  interface 



30
インターフェース—要点は?
インターフェイスの理由は本当に私を逃れています。私が理解していることから、C#には存在しない(または、そう言われたように)存在しない多重継承の回避策のようなものです。 私が見るすべては、あなたはいくつかのメンバーと関数を事前に定義し、それらはクラスで再び再定義される必要があるということです。したがって、インターフェースが冗長になります。それは構文のように感じます…まあ、私にはジャンクです(悪意はありません。役に立たないもののようにジャンク)。 スタックオーバーフローの別のC#インターフェイススレッドから取得した以下の例では、インターフェイスではなくピザと呼ばれる基本クラスを作成します。 簡単な例(別のスタックオーバーフローの貢献から取得) public interface IPizza { public void Order(); } public class PepperoniPizza : IPizza { public void Order() { //Order Pepperoni pizza } } public class HawaiiPizza : IPizza { public void Order() { //Order HawaiiPizza } }
269 c#  .net  interface 

4
Javaでデフォルトのメソッドを明示的に呼び出す
Java 8では、既存の実装を変更せずにインターフェースを拡張する機能を提供するデフォルトのメソッドが導入されています。 メソッドがオーバーライドされている場合、または異なるインターフェイスでデフォルト実装が競合しているために使用できない場合に、メソッドのデフォルト実装を明示的に呼び出すことができるかどうか疑問に思います。 interface A { default void foo() { System.out.println("A.foo"); } } class B implements A { @Override public void foo() { System.out.println("B.foo"); } public void afoo() { // how to invoke A.foo() here? } } 上記のコードを考慮してA.foo()、クラスBのメソッドからどのように呼び出しますか?

11
静的なネストされたインターフェースがJavaで使用されるのはなぜですか?
コードベースで静的なネストされたインターフェースを見つけました。 class Foo { public static interface Bar { /* snip */ } /* snip */ } 私はこれを見たことがありません。元の開発者は手が届きません。したがって、私はSOに尋ねなければなりません: 静的インターフェイスの背後にあるセマンティクスは何ですか?削除するとstaticどうなりますか?なぜ誰がこれをするのですか?
235 java  interface  static 

7
同じメソッドを使用して、クラスに2つのインターフェースを実装します。どのインターフェイスメソッドがオーバーライドされますか?
同じメソッド名とシグニチャーを持つ2つのインターフェース。しかし、単一のクラスによって実装された場合、コンパイラーはどのメソッドがどのインターフェースに対応するかをどのように識別するのでしょうか? 例: interface A{ int f(); } interface B{ int f(); } class Test implements A, B{ public static void main(String... args) throws Exception{ } @Override public int f() { // from which interface A or B return 0; } }

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