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

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



11
インターフェイスのコンストラクタ?
インターフェイスでコンストラクタを定義することは不可能であることを知っています。しかし、それは非常に役立つと思うので、なぜだろうと思います。 したがって、クラスの一部のフィールドがこのインターフェースのすべての実装に対して定義されていることを確認できます。 たとえば、次のメッセージクラスについて考えます。 public class MyMessage { public MyMessage(String receiver) { this.receiver = receiver; } private String receiver; public void send() { //some implementation for sending the mssage to the receiver } } メッセージインターフェースを実装するクラスを増やすために、このクラスのインターフェースを定義する場合、sendメソッドのみを定義でき、コンストラクターは定義できません。では、このクラスのすべての実装に実際にレシーバーセットがあることをどのように確認できますか?setReceiver(String receiver)私がこのようなメソッドを使用する場合、このメソッドが本当に呼び出されるかどうか確信が持てません。コンストラクタでは、それを確認できました。
148 java  interface 


4
なぜJavaインターフェイスメソッドを抽象として宣言するのでしょうか。
今日のEclipseの「プルインターフェース」リファクタリング機能を使用して、既存のクラスに基づくインターフェースを作成しました。新しいインターフェイスのすべての新しいメソッドを「抽象」メソッドとして作成するためのダイアログボックス。 そのメリットは何でしょうか? インターフェイスメソッドを抽象として宣言することが許可されているという事実は、特に推奨されていない、言語の余分で無害な機能であると思いました。 Eclipseがそのようなスタイルをサポートするのはなぜですか、または誰かが自発的にサポートすることを選択するのはなぜですか? 明確化:インターフェースメソッドが抽象的である理由を尋ねているのではありません。それらがインターフェイスにある場合でもそれらはとにかく抽象的であるため、なぜそれらを明示的に抽象としてマークすることを選択するのかと私は尋ねています。

11
Eclipse IDEのインターフェース実装に飛び込む
EclipseでF3メソッドを押すと、その宣言に移動する方法を知っていますか?まあ、私はインターフェイスの一部であるメソッドを持っています。これをクリックF3すると、当然、宣言インターフェイスに移動します。 明らかに、このインターフェースを実装するオブジェクトがあり、これがメソッドが実際に実装される場所です。を押すF3と、インターフェイス宣言ではなく、実装にジャンプします。コンパイル時に実装がわからない場合があることを知っているので、Eclipseがインターフェースを実装するすべてのクラスを表示して、実装するメソッドを選択して表示できるようにする方法はありますか?現在、これが発生しているときは、手動でこれを検索して、実装されているメソッドを見つけています。

2
インターフェイスを使用する場合、プライベートセッターをどのように実装しますか?
いくつかのプロパティを持つインターフェースを作成しました。 インターフェイスが存在しない場合、クラスオブジェクトのすべてのプロパティは次のように設定されます。 { get; private set; } ただし、これはインターフェイスを使用している場合は許可されないため、これを実現できますか?

10
Eclipseがインターフェースメソッドの@Overrideについて文句を言うのはなぜですか?
スーパークラスメソッドではなく、インターフェイスメソッド@Overrideをオーバーライドするメソッドを使用する既存のプロジェクトがあります。これをコードで変更することはできませんが、Mavenで引き続きビルドできるため、Eclpseがアノテーションについて不平を言わないようにしてください。 このエラーを無効にするにはどうすればよいですか? 注:プロジェクトの要件により、Java 1.5用にコンパイルする必要があります。

3
C#:抽象クラスはインターフェイスを実装する必要がありますか?
C#でのテストコード: namespace DSnA { public abstract class Test : IComparable { } } 次のコンパイラエラーが発生します。 error CS0535: 'DSnA.Test' does not implement interface member 'System.IComparable.CompareTo(object)' クラスTestは抽象クラスなので、コンパイラーはなぜインターフェースを実装する必要があるのですか?この要件はすべきではない強制具体的なクラスのために?


5
Java8:java.lang.Objectからメソッドのデフォルトメソッドを定義することが禁じられているのはなぜですか
デフォルトのメソッドは、Javaツールボックスの優れた新しいツールです。しかし、私はを定義するインターフェイスを書いてみましたdefaulttoStringメソッドのバージョン。で宣言されたメソッドは編集java.lang.Objectできない可能性があるため、これは禁止されているとJavaは教えてくれdefaultます。これはなぜですか? 「基本クラスは常に勝つ」というルールがあることを知っているので、デフォルトでは(pun;)、 defaultObjectメソッドの実装はObjectとにかくメソッドによって上書きされます。ただし、Object仕様に記載されているメソッドの例外が存在してはならない理由はありません。特にtoString、デフォルトの実装があると非常に便利です。 それで、Javaデザイナーが許可しないことに決めた理由は何ですか defaultメソッドをオーバーライドメソッドをObjectですか?

4
C#では、クラスは別のクラスとインターフェイスから継承できますか?
クラスがクラスとインターフェースから継承できるかどうか知りたい。以下のサンプルコードは機能しませんが、私がやりたいことを伝えていると思います。私がこれをしたいのは、私たちの会社ではUSB、シリアル、イーサネットなどのデバイスを作っているからです。すべてのアプリケーションで共通のもの(接続、切断、ファームウェアの取得など)を同じに保つのに役立つ、すべてのデバイス用のプログラムを作成するために使用できる汎用コンポーネント/インターフェイスを開発しようとしています。 この質問に追加するには:GenericDeviceが別のプロジェクトにある場合、そのプロジェクトにIOurDevicesインターフェイスを配置してから、最初のプロジェクトへの参照を追加すると、USBDeviceクラスにインターフェイスを実装させることができますか?なぜなら、1つのプロジェクトを参照し、デバイスに応じて異なるインターフェイスを実装したいからです。 class GenericDevice { private string _connectionState; public connectionState { get{return _connectionState; } set{ _connectionState = value;} } } interface IOurDevices { void connectToDevice(); void DisconnectDevice(); void GetFirmwareVersion(); } class USBDevice : IOurDevices : GenericDevice { //here I would define the methods in the interface //like this... void connectToDevice() …

9
インターフェース、実装、またはその両方にコメントしますか?
私たち全員が(私たちが気になることがあるとき!)私たちのインターフェースにコメントしていると思います。例えば /// <summary> /// Foo Interface /// </summary> public interface Foo { /// <summary> /// Will 'bar' /// </summary> /// <param name="wibble">Wibble factor</param> void Bar(string wibble); } 実装についてもコメントしますか(ライブラリーの一部としてクライアントに提供される場合もあります)?もしそうなら、どのようにしてこの2つの同期を保つのですか または、「ドキュメントのインターフェイスを表示」コメントを追加するだけですか? ありがとう
128 c#  java  comments  interface 

7
インターフェースを実装する抽象クラスが、インターフェースのメソッドの1つの宣言/実装を見逃す可能性があるのはなぜですか?
抽象クラスを使用してインターフェースを実装すると、Javaで奇妙なことが起こります。インターフェースのメソッドの一部が完全に欠落している可能性があります(つまり、抽象宣言も実際の実装も存在しない)が、コンパイラーは文句を言いません。 たとえば、次のインターフェイスがあるとします。 public interface IAnything { void m1(); void m2(); void m3(); } 次の抽象クラスは、警告やエラーなしで陽気にコンパイルされます。 public abstract class AbstractThing implements IAnything { public void m1() {} public void m3() {} } 理由を説明できますか?

1
拡張メソッドをインターフェイスに適用できますか?
拡張メソッドをインターフェースに適用することは可能ですか?(C#の質問) たとえば、次のことを実現します。 ITopologyインターフェイスを作成する このインターフェイスの拡張メソッドを作成します(例:public static int CountNodes(this ITopology topologyIf)) 次に、ITopologyを実装するクラス(MyGraphなど)を作成すると、自動的にCount Nodes拡張機能が追加されます。 このようにして、インターフェースを実装するクラスは、拡張メソッドで定義されたものに合わせるためにセットのクラス名を持つ必要はありません。

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