ホームページ >Java >&#&チュートリアル >Javaで抽象クラスをインスタンス化するにはどうすればよいですか?

Javaで抽象クラスをインスタンス化するにはどうすればよいですか?

王林
王林転載
2023-08-28 23:45:061221ブラウズ

Javaで抽象クラスをインスタンス化するにはどうすればよいですか?

抽象クラスは、「Abstract」キーワードを通じて Java で宣言されたクラスです。抽象クラスは、「継承」と呼ばれるオブジェクト指向プログラミング (OOP) の 4 つの原則の 1 つにおける概念です。継承とは、「サブクラス」と呼ばれるクラスがクラスのすべてのプロパティを継承する Java クラスの機能を指します。親クラスは「スーパークラス」と呼ばれることがよくあります。

Java では、抽象クラスは、他のサブクラスが継承できる基本スーパークラスを指します。抽象メソッドと非抽象メソッドの両方を含めることができます。

###アルゴリズム###

  • ステップ 1

    - デフォルトの実装がある、または実装されていないクラス内のメソッドを特定します。

  • ステップ 2

    - これらのメソッドの実装を削除します。

  • ステップ 3

    - クラス宣言に抽象キーワードを追加します。

  • ステップ 4

    - ステップ 2 で変更したメソッド宣言に abstract キーワードを追加します。

  • ステップ 5

    - クラスに初期化する必要があるインスタンス変数がある場合は、それらを初期化するためのコンストラクターを追加します。

  • ステップ 6

    - 抽象クラスのサブクラスを更新して、抽象メソッドを実装するか、それ自体を抽象にします。

    ###文法###
  • Java で抽象クラスをインスタンス化するための構文を見てみましょう -
リーリー ###方法###

抽象クラスは不完全なクラスであるため、「new」キーワードを使用して直接インスタンス化することはできません。

具象サブクラス

- 曖昧または不完全な抽象クラスを正しくインスタンス化するために、具象サブクラスの使用を選択できます。この親抽象化からシームレスに拡張し、その各メソッド要件を実装することにより、ユーザーは、操作にエラーや不一致が発生することなく、この新しくインスタンス化されたサブクラスを正常に作成および実装できます。

  • ラムダ式 - 抽象クラスからオブジェクトを作成するには、別のオプションがあります。すべての抽象化の実装を提供するラムダ式を使用します。このラムダ作成は、これらの署名に基づいて互換性のある関数インターフェイス変数に割り当てられます。

  • 抽象クラスをインスタンス化する 抽象クラスの使用法を理解するためにサンプル コード スニペットを見てみましょう。最初のシナリオでは、非抽象クラスを含むコードが提供されます。

    ###例### リーリー ###出力### リーリー
  • Circle クラスと Rectangle クラスは両方とも、「Shape」スーパークラスから printName()、area()、および printDetails() メソッドを継承します。ただし、どちらのクラスも area() メソッドをオーバーライドして独自の実装を提供することはありません。

Circle オブジェクトの printDetails() メソッドを呼び出すと、出力は「私は円です...そして私の面積は 38.48451 です」となります。同様に、Rectangle オブジェクトで printDetails() メソッドを呼び出すと、「私は長方形です...そして私の面積は 20.0 です」と出力されます。これにより、各クラスで提供される特定の実装に従って、出力が正しい形状とそれに対応する領域を反映することが保証されます。

例 1: 具体的なサブクラス

リーリー ###出力### リーリー

上記の更新されたコードでは、Circle クラスと Rectangle クラスは、「Shape」抽象クラスで定義された抽象メソッド printName() と area() を実装しています。 Shape クラスの printDetails() メソッドは、これらのメソッドを使用して、形状名とそのそれぞれの領域を出力できます。

Shape を抽象クラスにして抽象メソッドを定義することにより、Shape クラスを拡張するクラスは、printName() メソッドと area() メソッドに対して独自の実装を提供する必要があります。

例 2: ラムダ式

リーリー ###出力### リーリー

このコードの最新の更新では、getName() 関数を内部化しながら Shape を抽象クラスとして指定する改良されたメソッドを導入しました。さらなる改善には、getName() からのデータをうまく利用して、対応する各図形の名前を表示する printName メソッドの統合が含まれます。 Circle および Rectangle サブクラスの場合 - ラムダ式を使用して対応する getName をオーバーライドするようになり、予期されるフォームが正確に識別されるようになります。

###結論は###

つまり、抽象クラスは、直接ではなく、その基本サブクラスを通じてのみインスタンス化できます。これは継承された概念です。

この背後にある主な理由は、抽象クラスはそのメソッドとオブジェクトの完全な実装ではなく、それらを継承するためにサブクラスによって使用されることです。

以上がJavaで抽象クラスをインスタンス化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。