Javaの抽象クラスとメソッド[例付き]

公開: 2021-06-18

次の記事では、Javaでの抽象化の特性と、抽象クラスおよび抽象メソッドを介してそれを実現する方法について説明します。 Javaの抽象クラスとインターフェースの機能を探求します。

目次

抽象化

Javaの重要な概念の1つは、抽象化です。 これは、プログラムの重要な詳細のみをユーザーに表示するためのプロパティです。 必須ではない部分はすべて非表示になっています。 このプロセスは、電子メールの例で説明できます。 送信者は、受信者に配信される電子メールを送信します。 送信者に知られている唯一の情報は、電子メールが送信されたことです。 電子メールを送信するバックグラウンドプロセスは、ユーザーには表示されません。 同様に、オブジェクト指向プログラミング(OOP)のプロセスでは、重要な要素がユーザーに表示され、重要でない部分は非表示になります。 ユーザーは実装プロセスに関する情報を持っていませんが、機能だけがわかっています。 このメカニズムは、オブジェクトの本質的な特性のみが表示され、他の特性は無視される抽象化として知られています。

Javaでは、抽象化は抽象クラスとインターフェースを介して実現されます。

Javaの抽象クラス

キーワード「abstract」は、Javaの抽象クラスとメソッドに使用されます。 抽象クラスの宣言にはabstractキーワードが含まれています。

Java抽象クラスの構文は次のとおりです。

抽象クラスclass_name

{{

public abstract void the_abstractMethod();

public void the_normalMethod()

{{

#メソッドの本体

}

}

上記の構文は、通常のメソッドと抽象メソッドの両方を抽象クラスに含めることができることを示しています。

抽象クラスのいくつかのプロパティは次のとおりです。

  • 抽象メソッドは、 Java抽象クラスに存在する場合と存在しない場合があります
  • クラスに少なくとも1つの抽象メソッドが存在すると、そのクラスは抽象クラスになります。
  • 抽象クラスはオブジェクトを持つことができないため、直接インスタンス化することはできません。
  • 抽象クラスは、別のクラスから継承され、抽象メソッドを実装している場合にのみ使用できます。
  • 抽象クラスを継承するには、抽象メソッドを適切に実装する必要があります。
  • 通常のメソッドと抽象メソッドの両方をJava抽象クラスに含めることができます
  • パラメータ化されたコンストラクタは、抽象クラスに存在する場合があります。 また、抽象クラスには常にデフォルトのコンストラクターが含まれています。

抽象メソッド

抽象メソッドは、宣言の実装を必要としないタイプのメソッドです。 これらのメソッドには、実装がないことを意味する本体がありません。 抽象メソッドのいくつかのプロパティは次のとおりです。

  • Java抽象メソッドは、キーワード「abstract」で宣言されます。
  • abstractメソッドの宣言中は、メソッド名の前にabstractキーワードを配置する必要があります。
  • 抽象メソッドには本体はなく、メソッドのシグネチャのみが存在します。
  • Java抽象メソッドには中括弧はありませんが、メソッドの最後にはセミコロン(;)があります。

抽象doubleメソッド(double n1、double n2);

  • 抽象メソッドを含むクラスはすべて、抽象クラスとして宣言する必要があります。 逆は当てはまらないかもしれませんが、つまり、抽象クラスが抽象メソッドを持つ必要はありません。
  • 通常のクラスによる抽象クラスの継承には、親クラスのすべての抽象メソッドの実装が必要です。

抽象メソッドの例

パブリック抽象クラス車

{{

プライベート文字列モデル。

プライベート文字列の色;

プライベートint年;

public abstract doublecomputePrice();

}

派生クラスが抽象メソッドを実装していない場合、インスタンス化できない抽象クラスになります。

Javaのabstractキーワードで使用できないものもあります。

  • 最後の
  • 抽象ネイティブ
  • 抽象静的
  • 抽象プライベート
  • 抽象同期
  • 抽象strictfp

Javaでの抽象メソッドの使用を示すコードを以下に示します。

ソース

コードの出力は次のとおりです。

Javaインターフェイス

抽象クラスと抽象メソッド以外に、Javaはインターフェースを使用して抽象化を実現します。 関連するメソッドが空の本体にグループ化される場合、それはインターフェースと呼ばれます。 インターフェイスは、抽象メソッドのグループ化であるため、抽象クラスに似ています。 クラスがインターフェイスを実装すると、インターフェイス内のすべての抽象メソッドが継承されます。 インターフェイスには、デフォルトのメソッド、定数、静的メソッドも含まれる場合があります。 デフォルトメソッドと静的メソッドのみのメソッド本体が存在します。 継承とクラスは同様の方法で記述できますが、クラスはオブジェクトの属性と動作を記述できます。 インターフェイスの場合、オブジェクトの動作のみが存在しますが、それらはクラスによって実装されます。

クラスは、実装するインターフェースのすべてのメソッドを定義する必要があります。 抽象クラスの場合のみ、メソッドをクラスで定義する必要はありません。

インターフェイスは、次の点でJava抽象クラスに似ています。

  • インターフェイスには、任意の数のメソッドを含めることができます。
  • .java拡張子は、ファイルにインターフェースを書き込むために使用されます。 ファイルの名前は、インターフェイスの名前と一致する必要があります。
  • .classファイルには、インターフェイスのバイトコードが含まれています。
  • インターフェイスはパッケージに表示されます。 インターフェイスのバイトコードファイルは、パッケージ名と同じ名前のディレクトリにあります。

インターフェイスは、次の点でJava抽象クラスとは異なります。

  • インターフェイスをインスタンス化できません。
  • インターフェイスにはコンストラクタはありません。
  • インターフェイスには抽象メソッドのみが含まれています。
  • インターフェイスにインスタンスフィールドはありません。 フィールドをインターフェイスに表示する必要がある場合は、フィールドを静的と最終の両方として宣言する必要があります。
  • クラスのみがインターフェースを実装できますが、拡張することはできません。
  • インターフェイスは複数のインターフェイスを拡張できます。

世界のトップ大学からオンラインでソフトウェアコース学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

インターフェイスのプロパティ

  • インターフェイスは暗黙的に抽象的であるため、 abstractキーワードを使用してインターフェイスを抽象として宣言する必要はありません
  • 抽象キーワードは暗黙的に抽象であるため、メソッドを抽象として宣言する必要はありません。
  • インターフェイスのすべてのメソッドは暗黙的にパブリックです。

インターフェイスを宣言する方法は?

キーワード「interface」は、インターフェースを宣言するために使用されます。 完全な抽象化は、インターフェースを使用して提供されます。 デフォルトでは、インターフェース内のすべてのメソッドは抽象的でパブリックです。 これは、インターフェイスにメソッドがなく、すべてのフィールドが静的、公開、および最終であることを意味します。

インターフェイスの構文:

インターフェイスname_of_the_interface{

#フィールドを宣言する

#抽象メソッドを宣言する

}

たとえば、インターフェイスプレーヤー

{{

最終整数年齢=40;

int calc();

}

インターフェイスを実装する方法は?

インターフェイスを実装するには、キーワード「 implements」を使用します。 1つのクラスで複数のインターフェースを実装できます。 このような場合、キーワード「 implements」の後に、コンマで区切られたインターフェースのリストが続きます。 キーワードはクラス宣言で使用されます。

インターフェイスの実装例を以下に示します。

クラスマルティは車を実装します

Javaでのインターフェースの実装を示すコードの例を以下に示します。

ソース

このコードは、次の出力を生成します。

複数のインターフェースの実装を適用するコードを以下に示します。

ソース

このコードは、次の出力を生成します。

いくつかのテキスト…

他のテキスト…

なぜインターフェースが使われるのですか?

  • インターフェイスは、完全な抽象化を実現するために使用されます。
  • Javaは多重継承をサポートしていないため、Javaでの多重継承は、継承を使用することで実現できます。
  • 緩い結合は、インターフェースを使用することで実現できます。
  • Javaでの実装の抽象化を使用することで、実現できます。

Javaでの抽象化は、Java抽象クラスを介して実現できますが、最終変数、パブリック変数、および静的変数が含まれているため、インターフェースが使用されます。 ただし、非最終変数は抽象クラスに存在する場合があります。

抽象化を実現するためにJavaインターフェースとJava抽象クラスの両方を使用する場合、インターフェースと抽象クラスをいつ使用する必要がありますか?

  • 抽象クラスは、ユーザーがサブクラスのグループのテンプレートを定義する必要がある場合に使用されます。
  • インターフェイスは、ユーザーが他のクラスのロールを定義する必要がある場合に使用されます。

抽象化のいくつかの利点は次のとおりです。

  • プログラムの複雑さが軽減されます。
  • コードの重複が再利用性を高める可能性は低くなります。
  • ユーザーに提供される詳細はごくわずかであるため、抽象化を使用することでプログラムのセキュリティが向上します。

結論

この記事では、Javaでの抽象化の詳細な概念について説明しました。これは、重要でない情報をユーザーから隠す手法です。 Javaでは、抽象化は抽象クラスとインターフェースを介して実現されます。 100%の抽象化はインターフェースによって提供され、部分的な抽象化は抽象クラスによって提供されます。 この記事では、インターフェイスを使用する場合と抽象クラスを使用する場合についてさらに説明しました。 また、 Java抽象クラスのインターフェースとの類似点と相違点もリストしました 両方の概念についての必要な知識がないと、コードに欠陥がたくさんあります。

さらに詳しく学び、現実の問題の概念を実装することに興味がある場合は、 upGradが提供するMasters inComputerScienceコースリバプールジョンムーア大学が認めたIIIT-Bangaloreをチェックしてください。 このコースは、業界をリードする専門家やソフトウェアエンジニアリング学部から500時間以上のトレーニングを提供する、エントリーレベルの専門家(21〜45歳)向けに設計されています。 コースの詳細は、upGradの公式ウェブページで確認できます。

自分をスキルアップして未来に備える

IIIT-Bからソフトウェア開発のエグゼクティブPGプログラムに申し込む