カプセル化とインターフェイスでは、private キーワードはオブジェクトの内部メンバーをカプセル化します。カプセル化後、製品は内部の詳細を隠し、ユーザー インターフェイスのみを提供します。
インターフェースは、私たちの抽象的思考を助ける非常に便利な概念です。実生活では、特定のアプライアンスについて考えるとき、多くの場合、そのアプライアンスの機能インターフェイスを思い浮かべます。例えばコップであれば、コップの素材や値段よりも、水を入れて飲みたいという可能性を考えます。言い換えれば、アプライアンスのインターフェイスは、ある程度までアプライアンス自体と同等です。内部の詳細は思考プロセスから除外されました。
念頭に置いた一杯
パブリックカプセル化メカニズムとプライベートカプセル化メカニズムでは、実際にはクラスとインターフェイスを同時に定義し、クラスとインターフェイスが混在しています。 Java はインターフェース構文も提供します。この構文は、インターフェイスをクラスの特定の定義から分離し、独立した本体を形成します。
インタフェース
カップを例として、カップ インターフェイスを定義します。
次のようにコードをコピーします。
インターフェースカップ {
void addWater(int w);
void DrinkWater(int w);
}
Cup インターフェイスは、addWater() と DrinkWater() という 2 つのメソッドのプロトタイプを定義します。メソッドのプロトタイプは、メソッド名、パラメータ リスト、および戻り値の型を指定します。プロトタイプは、これらのメソッドの使用方法を外部に伝えることができます。
インターフェースでは、
1. メソッド本体を定義する必要がない
2. メソッドの可視性を指定する必要はありません
2 番目の点に注意してください。インターフェイス内のメソッドはデフォルトでパブリックです。 「カプセル化とインターフェイス」で述べたように、クラスのパブリック メソッドはインターフェイスを構成します。したがって、インターフェイスに表示されるすべてのメソッドはデフォルトでパブリックになります。
以下の MusicCup (音楽を再生できるカップ) などのクラスの定義にインターフェイスを実装できます。
次のようにコードをコピーします。
クラス MusicCup は Cup を実装します
{
public void addWater(int w)
{
この水 = この水 + w;
}
public void DrinkWater(int w)
{
this.water = this.water - w;
}
プライベート int 水 = 0;
}
インターフェースを実装するには、implements キーワードを使用します。インターフェイスをクラスに実装したら、インターフェイスのすべてのメソッド (addWater() および DrinkWater()) をクラス内で定義する必要があります。クラス内のメソッドは、インターフェイス内のメソッド プロトタイプと一致する必要があります。それ以外の場合、Java はエラーを報告します。
インターフェイスで言及されていない他のパブリック メソッドをクラスで定義できます。つまり、interface は実装する必要がある最小限のインターフェイスを指定します。たとえば、次の WaterContent() メソッドは、Cup インターフェイスのプロトタイプを指定しません。
次のようにコードをコピーします。
クラス MusicCup は Cup を実装します
{
public void addWater(int w)
{
この水 = この水 + w;
}
public void DrinkWater(int w)
{
this.water = this.water - w;
}
public int WaterContent()
{
これを返します。水。
}
プライベート int 水 = 0;
}
個別のインターフェースの意味
インターフェイスを使用しましたが、このインターフェイスではクラスを定義する際の作業負荷は軽減されませんでした。以前と同様に、クラスを具体的に作成する必要があります。インターフェースのルールに違反しないようにさらに注意する必要があります。この場合、なぜインターフェイスを使用するのでしょうか?
実際、インターフェイスは業界標準のようなものです。ファクトリ (クラス) は、業界標準 (インターフェイスの実装) を採用することも、そうでないこともできます。ただし、業界標準を採用した製品には次のような利点があります。
1. 高品質:加水機能のないカップは基準を満たしません。
2. より簡単なプロモーション: コンピュータの USB インターフェイスと同様に、ダウンストリーム製品をより簡単に接続できます。
すでに Java プログラムがある場合は、それを使用して、子供たちに水を飲ませるなど、Cup インターフェイスに準拠するオブジェクトを処理します。次に、子供のカップ (オブジェクト) に Cup インターフェイスを確実に実装している限り、子供が水を飲むというアクションを実行できることを保証できます。このコップ(オブジェクト)が水を飲むという動作を具体的にどのように定義するかについては、対応するクラスの決定に任せることができます(ストローで飲む、小さな口を開けて飲むなど)。
コンピューターサイエンスにおいて、インターフェースは非常に重要な概念です。たとえば、UNIX インターフェイスを提供するオペレーティング システムはすべて UNIX システムと呼ぶことができます。 Linux、Mac OS、および Solaris はすべて UNIX システムであり、同様のインターフェイスを提供します。ただし、各システムの具体的な実装 (ソース コード) はそれぞれ異なります。 Linux はオープンソースであり、コードのすべての行を表示できますが、Solaris システムをプログラムする方法はまだわかりません。
同じUNIXインターフェース
複数のインターフェースを実装する
クラスは複数のインターフェイスを実装できます。たとえば、次のインターフェイスがあります。
次のようにコードをコピーします。
インターフェイス MusicPlayer {
void play();
}
MusicCup クラスをもう一度考えてみましょう。 MusicCup は、プレーヤーとカップのハイブリッドとして見ることができます。
したがって、MusicCup には 2 つのインターフェイス セットが必要です。つまり、MusicPlayer インターフェイスと Cup インターフェイスを同時に実装する必要があります。
次のようにコードをコピーします。
クラス MusicCup は MusicPlayer、Cup を実装します。
{
public void addWater(int w)
{
この水 = この水 + w;
}
public void DrinkWater(int w)
{
this.water = this.water - w;
}
public void play()
{
System.out.println("ラ...ラ...ラ");
}
プライベート int 水 = 0;
}
最後に、この記事のインターフェイスとクラス定義を同じファイルに配置し、Test クラスを作成して実行してみます。
要約する
インターフェイス、メソッドのステレオタイプ、パブリック
インターフェイスを実装します
インターフェース1、インターフェース2を実装します