JavaSEオブジェクト指向の継承、ポリモーフィズム、抽象クラス、インターフェース


1.継承

(1)継承の概要

継承は、オブジェクト指向の3つの主要な特性の1つであり、サブクラスに親クラスのメソッドとプロパティを持たせることができ、サブクラスにプロパティとメソッドを再定義して追加することもできます。

継承された形式

●形式:パブリッククラスサブクラス名は親クラス名を拡張します{}

●例:パブリッククラスZiはFu{}を拡張します

●Fu:は親クラスであり、基本クラスおよびスーパークラスとも呼ばれます。

●Zi:はサブクラスであり、派生クラスとも呼ばれます。

父親:

サブクラス:

テストクラスのサブクラスを介してshowメソッドを呼び出すと、showメソッドが親クラスにあるため、エラーが報告されます。このとき、親クラスを継承するサブクラスを介してshowメソッドを呼び出すことができます。継承後に呼び出してもエラーは報告されません。

継承前:

継承後:

継承中性子サブクラスの特徴:

●サブクラスは、親クラスのコンテンツを持つことができます。

●サブクラスは、独自のコンテンツを持つこともできます。

(2)継承の長所と短所

継承の利点:

●コードの再利用性を向上させます(複数のクラスの同じメンバーを同じクラスに配置できます)。

●コードの保守性を向上させます(メソッドのコードを変更する必要がある場合は、1か所だけ変更してください)。

継承のデメリット:

●継承によりクラス間の関係が生まれ、クラスの結合が強化されます。親クラスが変更されると、サブクラスも変更する必要があり、サブクラスの独立性が弱まります。

いつ継承を使用しますか?

●継承によって具現化された関係:です。

●仮説的方法;私はAとBの2つのクラスを持っています。AがBの一種、またはBがAの一種であると彼らが満たす場合、それらは継承関係にあると言われます。このとき、継承は次のように考えることができます。それを実装しないと、継承の誤用になることはありません。

●例:果物とリンゴ、動物と猫。

(3)継承における変数のアクセス特性

 サブクラスの変数にアクセスする場合:

●サブクラスローカルスコープ検索

●検索するサブクラスメンバースコープ

●検索する親クラスメンバースコープ

●ない場合は、エラーを報告してください

(4)、スーパーキーワード

スーパーキーワードの使用法は、このキーワードの使用法と似ています

●this:this内のオブジェクトへの参照を表します。

スーパー:親クラスのストレージスペースを表す識別子(親クラスオブジェクトへの参照として理解できます)

 (5)継承におけるコンストラクタのアクセス特性

サブクラスのすべてのコンストラクターは、デフォルトで親クラスの引数なしのコンストラクターにアクセスします。なぜですか?

●サブクラスは親クラスのデータを継承し、親クラスのデータも使用する可能性があるため、サブクラスを初期化する前に、まず親クラスのデータの初期化を完了する必要があります。

各サブクラスコンストラクターの最初のステートメントのデフォルトは次のとおりです。super()

親クラスにパラメーターなしのコンストラクターがなく、パラメーター化されたコンストラクターのみがある場合はどうなりますか?

●superキーワードを使用して、親クラスのパラメーター化されたコンストラクターを明示的に呼び出す。  

●親クラスにパラメータなしのコンストラクタを提供します。

(6)継承におけるメンバーアクセスの特徴

サブクラスオブジェクトを介してメソッドにアクセスするには:

●サブクラスメンバースコープで最初に検索

●親クラスのメンバースコープを調査する

●ない場合は、エラーを報告してください

(7)、メソッドの書き換え

メソッドのオーバーライド:

親クラスと同じメソッド宣言がサブクラスに表示されます

メソッドオーバーライドの適用:

●サブクラスが親クラスの関数を必要とし、関数mainサブクラスが独自のコンテンツを持っている場合、親クラスのメソッドを書き換えることで、親クラスの関数を継承するだけでなく、サブクラスの一意のコンテンツ。

●@Overrideは、オーバーライドされたメソッドのメソッド宣言の準正しさを確認するのに役立ちます

メソッドのオーバーライドに関する注意:

●プライベートメソッドをオーバーライドすることはできません(親クラスに対してプライベートである(プライベートによって変更された)メンバーは、サブクラスによって継承できません)。

●サブクラスメソッドのアクセス権を低くすることはできません(publi>デフォルト> private)

(8)相続に関する注意事項

●Javaのクラスは、多重継承ではなく、単一継承のみをサポートします。

●Javaのクラスは、マルチレベルの継承をサポートしています。

(9)権限修飾子

1.ファイナル

最後のキーワードは最終的な意味であり、メンバーメソッド、メンバー変数、およびクラスを変更できます

最終変更の特徴:

●変更されたメソッド:メソッドが最終であり、オーバーライドできないことを示します。

●変更された変数:変数が定数であり、ブーンが再度割り当てられることを示します。

●変更されたクラス:クラスが最終クラスであり、継承できないことを示します。

finalはローカル変数を変更します:

●変数はプリミティブ型です:最終変更とは、プリミティブ型のデータ値を変更できないことを意味します。

●変数は参照型です。最終変更とは、参照型のアドレス値は変更できませんが、アドレスの内容は変更できることを意味します。

2.静的

staticキーワードは静的を意味し、メンバーメソッドとメンバー変数を変更できます。

静的変更の機能:

●クラスのすべてのオブジェクトで共有

               これは、staticキーワードを使用するかどうかを判断するための条件でもあります。

●クラス名で呼び出すことができます

                もちろん、オブジェクト名で呼び出すこともできます。呼び出すにはクラス名を使用することをお勧めします。

静的アクセスの機能:

静的メンバーメソッドは静的メンバーにのみアクセスできます

2.ポリモーフィズム

(1)ポリモーフィズムの概要

同じオブジェクト、異なる時間に異なるフォーム

例:猫

猫は猫であると言えます:cat cat = new cat()。

猫は動物であるとも言えます:animal animal = new cat()

さまざまな形がさまざまな時期にここに現れました、これはポリモーフィズムです

ポリモーフィズムの前提と具体化

●継承/実装の関係があります

●オーバーライドする方法があります

サブクラスオブジェクトを指す親クラス参照があります

(2)ポリモーフィズムにおけるメンバーアクセス特性

●メンバー変数:コンパイルについては左側を参照し、実行については左側を参照してください。

●メンバーメソッド:左側を参照してコンパイルし、右側を参照して実行します。

メンバーメソッドがメンバー変数と異なるのはなぜですか?

●メンバーメソッドはオーバーライドされ、メンバー変数はオーバーライドされないため

(3)ポリモーフィズムの長所と短所

ポリモーフィズムの利点:プログラムのスケーラビリティを向上させる

                    具体的な実施形態:メソッドを定義するときは、親型をパラメータとして使用し、将来使用するときは、特定のサブ型を使用して操作に参加します。

●ポリモーフィズムのデメリット:サブクラスの固有の機能を使用することはできません。

(4)ポリモーフィズムの変換

最初の3つのクラスが与えられます:

動物:

猫:

テストクラス:

●アップキャスト:子から親へ、親クラス参照は子クラスオブジェクトを指します

●ダウンキャスト:親から子へ、親クラス参照が子クラスオブジェクトに変換されます

3つの抽象クラス

抽象クラスの概要:

Javaでは、メソッド本体のないメソッドは抽象メソッドとして定義する必要があり、クラスに抽象メソッドがある場合は、クラスを抽象クラスとして定義する必要があります。

抽象クラスの機能:

●抽象クラスと抽象メソッドは、abstractキーワードで変更する必要があります。

         public abstract class 类名{}

         public abstract void eat();

●抽象クラスは必ずしも抽象メソッドを持っているとは限らず、抽象メソッドを持っているクラスは抽象クラスでなければなりません。

●抽象クラスはインスタンス化できません

          抽象クラスはどのようにインスタンス化されますか?

            ポリモーフィズムを参照すると、サブクラスオブジェクトを介したインスタンス化は、抽象クラスポリモーフィズムと呼ばれます。

抽象クラスのサブクラス

              抽象クラスのすべてのメソッドをオーバーライドする

              抽象クラスのいずれか

抽象クラスのメンバー特性:

●メンバー変数:変数または定数にすることができます。

●コンストラクタ:コンストラクタはありますが、インスタンス化できません

      では、コンストラクターの役割は何ですか?

               親クラスデータにアクセスするためのサブクラスの初期化

●メンバーメソッド:サブクラスが完了しなければならない特定のアクションを制限する抽象メソッドが存在する可能性があります。

                     コードの再利用性を向上させるための非抽象メソッドもあります。

4.インターフェース

(1)インターフェースの概要

インターフェイスは、仕様標準に準拠している限り、誰でも使用できる公開仕様標準です。

Javaのインターフェースは、動作の抽象化でより具体化されます。

(2)インターフェースの特徴

●インターフェースはキーワードinterfaceで変更されます

            パブリックインターフェイスインターフェイス名{}

クラス実装インターフェースは、実装によって表されます

            パブリッククラスクラス名はインターフェイス名を実装します{}

インターフェイスをインスタンス化できません

             インターフェイスはどのようにインスタンス化されますか?

                    ポリモーフィズムの方法を参照すると、クラスオブジェクトのインスタンス化を実装することにより、これはインターフェイスポリモーフィズムと呼ばれます。

             ポリモーフィズムの形式:具象クラスポリモーフィズム、抽象クラスポリモーフィズム、インターフェースポリモーフィズム

             ポリモーフィズムの前提:継承または実装の関係があり、メソッドのオーバーライドがあり、(子/実装)クラスオブジェクトを指す親(クラス/インターフェイス)参照があります。

●インターフェースの実装クラス

            インターフェイスのすべての抽象メソッドをオーバーライドするか、抽象クラスになります。

(3)インターフェースのメンバー特性

●メンバー変数:定数のみにすることができます。

                     デフォルトの修飾子:public static final

●工法:インターフェースは主に動作を抽象化し、具体的に存在しないため、工法はありません。      

                     クラスに親クラスがない場合、デフォルトでObjectクラスを継承します

●メンバーの方法:知識の抽象化の方法

                    デフォルトの修飾子:public abstract

(4)クラスとインターフェースの関係

●クラスとクラスの関係

            継承関係、単一継承のみ、ただし多層継承

●クラスとインターフェースの関係

            実装関係は、単一実装または複数実装にすることができ、クラスを継承しながら複数のインターフェースを実装することもできます。

●インターフェースとインターフェースの関係

            継承関係は、単一継承または多重継承にすることができます

(5)抽象クラスとインターフェースの違い

●会員差

            抽象クラス変数、定数;コンストラクター、抽象メソッド、および非抽象メソッドがあります

            インターフェイス定数;抽象メソッド

●関係の区別

             クラスとクラスの継承、単一の継承

             クラスとインターフェースの実装は、単独で実装することも、複数の実装で実装することもできます

             インターフェイスとインターフェイスの継承、単一の継承、複数の継承

●デザインコンセプトの違い

             抽象クラスプロパティ、動作を含む抽象クラス

             インターフェイスは動作、主に動作を抽象化します

       

おすすめ

転載: blog.csdn.net/m0_62764440/article/details/121625964
おすすめ