Java の抽象メソッド: Shape クラスの例

Javaの抽象化とは何ですか?

JAVAの抽象化 必須の属性のみを表示し、不要な属性を非表示にします。tails ユーザーからのオブジェクトの。 Java では、抽象化は、抽象クラス、抽象メソッド、およびインターフェイスを使用して実現されます。抽象化はプログラミング コムの削減に役立ちますplex体力と努力。

このチュートリアルでは、次のことを学びます。

抽象クラスとは?

抽象クラス Java のクラスの一種で、XNUMX つ以上の抽象メソッドを宣言します。 これらのクラスには、具象メソッドだけでなく抽象メソッドも含めることができます。 通常のクラスは抽象メソッドを持つことができません。 抽象クラスは、少なくとも XNUMX つの抽象メソッドを含むクラスです。 この概念は次のように理解できます。 Javaでの形状の例.

以下を検討してくださいwing クラス階層は、Rectangle、Circle、Triangle の XNUMX つのクラスによって継承される Shape クラスで構成されます。 Shape クラスは、Rectangle、Circle、Triangle の XNUMX つのクラスで共有される共通の属性とメソッドを節約するために作成されます。 CalculateArea() は、XNUMX つの子クラスすべてで共有され、Shape クラスに存在するメソッドの XNUMX つです。

Javaの抽象クラス
形状の抽象化の例

ここで、上に示したクラスのオブジェクトを作成するコードを作成すると仮定します。 これらがどのように起こるかを観察してみましょう オブジェクトは現実的な世界で見えます。

クラス 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 の抽象クラス: 重要なポイント

  • 抽象クラス かもしれません 具体的な(完全な)メソッドもあります。
  • 設計目的のため、クラスに抽象メソッドが含まれていない場合でも、クラスを抽象として宣言できます。
  • 抽象クラスの参照は、そのサブクラスのオブジェクトを指すことができるため、実行時を実現できます。 多型 例: Shape obj = new Rectangle();
  • クラスに XNUMX つ以上の抽象メソッドがある場合、クラスには強制的に抽象というラベルを付ける必要があります。

Java の最後のキーワード

最後の修飾子は、クラス、メソッド、変数に適用されます。 「final」の意味は文脈によって異なりますが、本質的な考え方は同じです。

  • 最終クラスは継承できません
  • 最終変数は定数となり、その値は変更できません。
  • 最終メソッドをオーバーライドすることはできません。 これはセキュリティ上の理由から行われ、これらのメソッドは最適化に使用されます。

:- 抽象的なキーワードと最終的なキーワードを学ぶ

ステップ1) 以下をコピーしますwing コードをエディターに入力します。

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 は最終値です

抽象メソッドのルール

  • 抽象メソッドには実装がありません。 メソッドのシグネチャのみが含まれています
  • クラスが抽象メソッドを使用している場合は、抽象メソッドを宣言する必要があります。 その逆は成り立ちません。 これは、抽象クラスが必ずしも抽象メソッドを持つ必要はないことを意味します。
  • 通常のクラスが抽象クラスを拡張する場合、そのクラスは抽象親のすべての抽象メソッドを実装する必要があります。