Java での抽象化 |例付きの抽象クラスとメソッド
Java の抽象化とは
JAVA での抽象化 必須の属性のみを表示し、オブジェクトの不要な詳細をユーザーから隠します。 Java では、Abstract クラス、Abstract メソッド、および Interfaces を使用して抽象化を実現します。抽象化は、プログラミングの複雑さと労力を軽減するのに役立ちます。
このチュートリアルでは、次のことを学びます-
- 抽象クラスとは?
- 抽象メソッドとは?
- 抽象化コードの例
- Java の抽象クラス
- Java の最終キーワード
抽象クラスとは?
抽象クラス 1 つまたは複数の抽象メソッドを宣言する、Java のクラスのタイプです。これらのクラスには、抽象メソッドと具象メソッドを含めることができます。通常のクラスは抽象メソッドを持つことはできません。抽象クラスは、少なくとも 1 つの抽象メソッドを含むクラスです。 Java の形状の例で概念を理解できます .
Rectangle、Circle、および Triangle の 3 つのクラスによって継承される Shape クラスで構成される次のクラス階層を考えてみましょう。 Shape クラスは、Rectangle、Circle、および Triangle の 3 つのクラスによって共有される共通の属性とメソッドを節約するために作成されます。 calculateArea() は、3 つの子クラスすべてで共有され、Shape クラスに存在するメソッドの 1 つです。
<センター>
<図> フィギュア>センター>
ここで、上記のクラスのオブジェクトを作成するコードを作成するとします。これらのオブジェクトが実際の世界でどのように見えるかを観察してみましょう。
クラスrectangleのオブジェクトは、日常生活でよく見られる形である長方形を与えます。
クラス三角形のオブジェクトは三角形を与えますが、これも日常的な形です。
しかし、Class Shape のオブジェクトは実際の世界ではどのように見えるでしょうか??
Shape クラスが継承とポリモーフィズムを達成するという私たちの目標に役立つことがわかります。 ただし、インスタンス化するように構築されていません。このようなクラスには Abstract というラベルを付けることができます .抽象 Java クラスはインスタンス化できません。
構文:
abstract class Shape{ // code }
Shape クラスに Abstract というラベルを付けてインスタンス化しないことも可能です。しかし、そのようなオブジェクトはコードでは役に立たず、潜在的なエラーの余地を残します。したがって、これは望ましくありません。
抽象メソッドとは?
抽象的方法 Java では、メソッド定義だけを持ち、実装を含まないメソッドです。本体のないメソッドは、抽象メソッドとして知られています。抽象クラスで宣言する必要があります。抽象クラスはすべての抽象メソッドを実装する必要があるため、抽象メソッドが最終的なものになることはありません。
ご存知のように、長方形、円、三角形の面積を計算する式は異なります。 calculateArea() メソッドは、継承クラスによってオーバーライドされる必要があります。 Shape クラスで定義しても意味がありませんが、すべての継承クラスにメソッドがあることを確認する必要があります。
このようなメソッドは、abstract とラベル付けできます。
構文:
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 の抽象クラス:重要なポイント
- 抽象クラスはできる 具体的な (完全な) メソッドも持っています。
- 設計上の理由から、抽象メソッドが含まれていなくてもクラスを抽象として宣言できます
- 抽象クラスの参照は、そのサブクラスのオブジェクトを指すことができるため、ランタイム ポリモーフィズムを実現できます。例:Shape obj =new Rectangle();
- クラスに 1 つ以上の抽象メソッドがある場合、そのクラスは強制的に抽象としてラベル付けする必要があります。
Java の最終キーワード
final 修飾子は、クラス、メソッド、および変数に適用されます。 final の意味は文脈によって異なりますが、本質的な考え方は同じです。
- 最終クラスは継承できません
- 最終変数は定数になり、その値は変更できません。
- 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 は final です
抽象化方法の規則
- 抽象メソッドには実装がありません。メソッドシグネチャのみを持っています
- クラスが抽象メソッドを使用している場合、抽象メソッドを宣言する必要があります。その逆はあり得ません。これは、抽象クラスに必ずしも抽象メソッドがあるとは限らないことを意味します。
- 通常のクラスが抽象クラスを拡張する場合、そのクラスは抽象親のすべての抽象メソッドを実装する必要があります
Java
- C# の抽象クラスとメソッド
- Java 抽象クラスと抽象メソッド
- 例を含む C# 抽象クラスのチュートリアル:抽象化とは?
- Java の String Length() メソッド:例で見つける方法
- Java String charAt() メソッドと例
- Java String contains() メソッド |部分文字列を例でチェック
- 例を使用したJava文字列のendsWith()メソッド
- Java のインターフェイスと抽象クラス:違いは何ですか?
- Java BufferedReader:例を使用して Java でファイルを読み取る方法
- プログラム例を使用した Java の挿入ソート アルゴリズム
- Java-抽象化