クラスインターフェイスとは何ですか?
-
06-07-2019 - |
質問
現在、コードの完了と「インターフェイス」という単語を使用しています。飛び出し続けます!インターフェースとは何かを頭に入れようとしています。用語を定義できますか?また、実際に「クラスインターフェイス」を構成するものは何ですか?
解決
インターフェイスを定義する良い方法は次のとおりだと思います
インターフェースは、実装オブジェクトで使用できるメソッド、フィールド、プロパティのセットを指定するコントラクトです
言語から言語への実際の実装には、ちょっとした違いがありますが、原則は変わりません。
実装済みのインターフェースを上記のリストに追加することを検討しましたが、言語固有であるように思われたため、そのままにしました。しかし、最終的な効果はほとんど同じであるので、大丈夫だと思います。より多くのインターフェイスに取り組むことは、単にメソッド、フィールド、およびプロパティをコントラクトに追加することです。
他のヒント
一般に、インターフェースは、「クラスが他の世界にどのように見えるか」だけです。
たとえば、Javaのこのクラス:
class MyClass {
private string data;
private string Foo() {...}
public void Bar(string s){...}
}
インターフェースにBar機能だけがあると言えます。内部的には他にもいくつかのメンバーがいますが、それらはプライベートなので、外の世界には見えません。
より一般的には、インターフェイスは言語の特定のタイプでもあります。たとえば、次のように、MyClassはインターフェイスIMyClassを実装します。
interface IMyClass {
public void Bar(string s);
}
class MyClass implements IMyClass {
private string data;
private string Foo() {...}
public void Bar(string s){...}
}
インターフェイスはコードで表現されるようになりました。そのため、IMyClass型の変数が予期されるときはいつでも、MyClass型のオブジェクトを使用できます。これは、正しいインターフェイスを実装するためです。
それは世界の外見です。通常、公開する一連のパブリックメソッド(メンバー)。
ただし、技術的には2つの異なるものになります
インターフェースはパブリックコントラクトです。例:
interface ILogger
{
void Log(String str);
}
クラスは、このインターフェイスを「実装」します-この機能を提供するという意味で
class ConsoleLogger : ILogger
{
public ConsoleLogger() { ... }
public void Log(String str)
{
Console.WriteLine("Console Logger " + str);
}
// private stuff
}
このサービス/インターフェースのユーザーは、それがどのように実装されているのか、誰がそれを実装しているのかを気にする必要はありませんか?インターフェイスに応じて、実際の実装を自由に切り替えることができます。
クラスへのインターフェースは、「公開フェイス」です。他のクラスが見ることができます。クラスの実装を他のクラスと対話する方法から分離します。そうすれば、異なる実装を交換することができ、他のクラスはインターフェースの背後にあるものについて何も知る必要がありません。
インターフェイスには、データメンバーと関数メンバーの両方を含めることができます。
インターフェースは、クラスが実装できる一連のメソッドの定義です。主にインターフェイスのポリモーフィズムに使用されます。
インターフェースはクラスに似ていますが、完全ではありません。クラスに似た特性を持っていますが、インターフェースではありません。インターフェイスには変数とメソッドがあり、「クラスと同じですが、インターフェイスで宣言されたメソッドはデフォルトでは抽象的です(メソッドシグネチャのみ、ボディなし)」。
インターフェースには2つの定義があります。インターフェースという用語がどのコンテキストで使用されるかによります。
- クラスインターフェースとは、クラスに実装されているすべてのパブリックメソッドを指します。
-
タイプとしてのインターフェース。つまり、キーワードinterfaceを使用してInterfaceを宣言します。
interface Movable{ moveStraight(); moveLeft(); moveRight(); stop(); }
これで、たとえば、CarがインターフェースMovableを実装できるクラスになりました。これが契約として知られているものです。クラスCarがインターフェースMovableを実装する場合、CarはMovablesで宣言されたすべてのメソッドの実装を提供することを保証します 宣言。
結論として、一般的に、インターフェイスは言語固有のプログラミングコンテキストの型(定義2)として扱われます。最初の定義は、通常、理論的または設計的コンテキストでより少ない機会に見つかります。
インターフェースの古典的な実生活の例は、車の制御です。
ブレーク、ガス、ホイールがインターフェースになります。 エンジンおよびその他の機械的側面が実装になります。 これらの機械的側面は変化する可能性がありますが、インターフェイスは同じままなので、わかりません。
これはインターフェースの力であり、実装の詳細を隠すため、より高いレベルの抽象化に取り組むことができます。通常、インターフェイスの機能は、その下にあるコードの実装方法を気にすることなく直接使用できます。