における抽象化 Java
抽象化とは何か Java?
抽象化 は、必須の属性のみを「表示」し、不要な情報を「非表示」にするオブジェクト指向プログラミングの概念です。抽象化の主な目的は、不要な詳細をユーザーから隠すことです。抽象化とは、より大きなプールからデータを選択して、オブジェクトの関連する詳細のみをユーザーに表示することです。これにより、プログラミングの複雑さと労力が軽減されます。これは、OOP の最も重要な概念の 1 つです。
クリック こちら ビデオにアクセスできない場合
例を使用して OOP の抽象化を学習してみましょう:
銀行アプリケーションを作成し、顧客に関するすべての情報を収集するように求められたとします。顧客に関する次のような情報が出てくる可能性があります。
しかし、銀行アプリケーションを作成するために上記のすべての情報が必要なわけではありません。そのため、銀行アプリケーションを作成するために役立つ情報のみを選択する必要があります。 銀行アプリケーション あのプールから。 名前、住所、税金情報などのデータは、OOP の抽象化例である銀行アプリケーションにとって意味があります。
より大きなプールから顧客情報を取得/削除/選択したため、このプロセスは抽象化と呼ばれます。 おっとっとただし、一度抽出した同じ情報は、幅広いアプリケーションに使用できます。たとえば、病院のアプリケーション、求人ポータル アプリケーション、政府のデータベースなどに、ほとんどまたはまったく変更せずに同じデータを使用できます。したがって、それがマスター データになります。これが、OOP における抽象化の利点です。
抽象化とカプセル化の違い
抽象化 | カプセル化 |
---|---|
オブジェクト指向プログラミングの抽象化により、設計レベルの問題が解決されます。 | カプセル化は実装レベルで解決します。 |
プログラミングにおける抽象化とは、最も重要な情報を表示しながら、不要な詳細を隠すことです。 | カプセル化とは、コードとデータを単一のユニットにバインドすることを意味します。 |
データ抽象化 Java 情報オブジェクトに何を含めるべきかに焦点を当てることができる | カプセル化 セキュリティ上の理由から、オブジェクトがどのように動作するかの内部の詳細や仕組みを隠すことを意味します。 |
抽象クラスとインターフェイスの違い
抽象クラス | インタフェース |
---|---|
抽象クラスには、抽象メソッドと非抽象メソッドの両方を含めることができます。 | インターフェイスには抽象メソッドのみを含めることができます。 |
多重継承はサポートしていません。 | 多重継承をサポートします。 |
インターフェースの実装を提供できます。 | 抽象クラスの実装は提供できません。 |
抽象クラスには、保護されたパブリック メソッドと抽象パブリック メソッドを含めることができます。 | インターフェイスにはパブリック抽象メソッドのみを含めることができます。 |
抽象クラスは、任意のアクセス指定子を含む、final、static、または static Final 変数を持つことができます。 | インターフェイスにはパブリックの静的な Final 変数のみを含めることができます。 |
抽象クラスとは?
抽象クラス はクラスの一種です Java、1つ以上の抽象メソッドを宣言するクラスです。これらのクラスは、抽象メソッドと具象メソッドを持つことができます。通常のクラスは抽象メソッドを持つことはできません。抽象クラスは、少なくとも1つの抽象メソッドを含むクラスです。この概念は、 Javaでの形状の例.
3 つのクラス Rectangle、Circle、Triangle によって継承される Shape クラスで構成される次のクラス階層について考えてみましょう。Shape クラスは、3 つのクラス Rectangle、Circle、Triangle で共有される共通の属性とメソッドを節約するために作成されます。calculateArea() は、3 つの子クラスすべてで共有され、Shape クラスに存在するメソッドの 1 つです。
ここで、上に示したクラスのオブジェクトを作成するコードを作成すると仮定します。 これらがどのように起こるかを観察してみましょう オブジェクトは現実的な世界で見えます。 クラス Rectangle のオブジェクトは、日常生活でよく見られる形状である長方形を与えます。
クラストライアングルのオブジェクトは三角形を与えますが、これも日常的によく使われる形状です。
しかし、クラス シェイプのオブジェクトは実際の世界ではどのように見えるでしょうか??
Shape クラスが次のように機能していることを観察すると、 私たちの達成目標 継承 そしてポリモーフィズム。 しかし、それはインスタンス化されるように構築されていません。 このようなクラスにはラベルを付けることができます 抽象。 抽象 Java クラスはインスタンス化できません。
構文:
abstract class Shape{ // code }
Shape クラスに Abstract というラベルを付けてインスタンス化しない可能性があります。 しかし、そのようなオブジェクトはコード内では役に立たず、潜在的なエラーが発生する余地が生じます。 したがって、これは望ましくない。
抽象メソッドとは何か Java?
抽象的な方法 in Java、メソッド定義のみを持ち、実装は含まれていないメソッドです。 本体のないメソッドは、抽象メソッドとして知られています。 抽象クラスで宣言する必要があります。 抽象クラスはすべての抽象メソッドを実装する必要があるため、抽象メソッドが最終的なものになることはありません。
ご存知のとおり、長方形、円、三角形の面積の計算式は異なります。 CalculateArea() メソッドは、継承クラスによってオーバーライドされる必要があります。 Shape クラスで定義しても意味がありません。 ただし、継承するすべてのクラスにメソッドがあることを確認する必要があります。
このようなメソッドにはラベルを付けることができます 概要。
構文:
abstract public void calculateArea();
抽象メソッドなので実装は必要ありません。 メソッドのシグネチャのみが定義されます。
抽象化コードの例
abstract class Shape{ abstract void calculateArea(); } class guru99 extends Shape{ void calculateArea(){System.out.println("Area of Shape");} public static void main(String args[]){ Shape obj = new guru99(); obj.calculateArea(); } }
抽象化の利点
- 抽象化を使用する主な利点は、 プログラミング それは、複数の関連するクラスを兄弟としてグループ化できることです。
- オブジェクト指向プログラミングにおける抽象化は、ソフトウェアの設計および実装プロセスの複雑さを軽減するのに役立ちます。
最終キーワード Java
最後の修飾子は、クラス、メソッド、変数に適用されます。 「final」の意味は文脈によって異なりますが、本質的な考え方は同じです。
- 最終クラスは継承できません
- 最終変数は定数となり、その値は変更できません。
- 最終メソッドをオーバーライドすることはできません。 これはセキュリティ上の理由から行われ、これらのメソッドは最適化に使用されます。
例: :- 抽象的なキーワードと最終的なキーワードを学ぶ
ステップ1) 次のコードをエディターにコピーします。
abstract class Shape{ final int b = 20; public void display(){ System.out.println("This is display method"); } abstract public void calculateArea(); } public class Rectangle extends Shape{ public static void main(String args[]){ Rectangle obj = new Rectangle(); obj.display(); //obj.b=200; } //public void calculateArea(){} }
ステップ2) コードを保存し、コンパイルして実行します。
ステップ3) エラー =? 抽象メソッドは Rectangle クラスには実装されていません。 問題を解決するには、行 #15 のコメントを解除します。
ステップ4) 行番号 13 のコメントを外します。コードを保存してコンパイルします。
ステップ5) エラー = ? 変数 b は最終値です
抽象メソッドと抽象クラスをいつ使用するか?
抽象メソッドはほとんどの場合、XNUMX つ以上のサブクラスが異なる実装を通じて異なる方法で同じことを実行する場所で宣言されます。 また、同じ Abstract クラスを拡張し、抽象メソッドのさまざまな実装を提供します。
抽象クラスは、一般的な動作の種類とオブジェクト指向プログラミングのクラス階層を記述するのに役立ちます。また、抽象クラスの実装の詳細を提供するサブクラスも記述します。
概要
- プログラミングにおける抽象化は、プログラミングに必要な重要なデータセットを選択するプロセスです。 オブジェクト ソフトウェアに含めて、重要でないものは省略します。
- データ抽象化を使用してオブジェクトをモデル化したら、 Java同じデータセットを異なるアプリケーションで使用できます。