継承と多形性で知っておくべき知識

オブジェクト指向プログラミング

1.継承:

客観的なものの間にいくつかの関連がある場合もありますが、クラスやオブジェクトとして表現された場合にもいくつかの関連があります。
たとえば、猫は動物であり、動物の基本的な属性を持っています。猫のクラスを定義するとき、いくつかの動物のプロパティの定義を繰り返す必要はありません。猫のクラスに動物のクラスを継承させるだけです。
(コードの再利用によりコードの冗長性が減少します)

1.式の形式:AはBを拡張します
A:サブクラス、派生クラス
B:親クラス、基本クラス、スーパークラス

2.サブクラスは親クラスから何を継承しますか?(BATインタビュー)
工法以外はすべて!
(サブクラスは、親クラスの構築メソッドを支援する必要があります。つまり、親クラスの構築メソッドにアクセスする必要があります)

3.これとスーパーキーワードの違いは?(インタビュー)
(1)これは現在のオブジェクトの参照を表します
https://blog.csdn.net/qq_45658339/article/details/108900917
superは親クラスの参照を表します
(2)
ここに写真の説明を挿入

4.保護されたキーワード:
フィールドがprivateに設定されている場合、サブクラスにアクセスできないことがわかりました。ただし、publicに設定すると、本来の「カプセル化」の意図に違反するため、保護されたキーワードを導入しました。

Javaのフィールドとメソッドには4つのアクセス権があります。
(1)プライベート:クラス内にアクセスしますが、クラス外にはアクセスしません(プライベート)
(2)デフォルト(パッケージアクセスデフォルトとも呼ばれます):クラス内へのアクセス、同じパッケージ内のクラスにアクセスできる、他のクラスにアクセスできない
(3)保護されている:クラスにアクセスできる、同じパッケージ内のサブクラスとクラスにアクセスできる、他のクラスにアクセスできない(保護されている)
(4)public:クラス内部そして、クラスの発信者はアクセスできます(パブリック)
ここに写真の説明を挿入

5.書き換えとリロードの違いは?(インタビュー)
https://blog.csdn.net/qq_45658339/article/details/108822052

6. finalの使用法:
(1)Finalは変数変更でき定数になります)、
final int SIZE = 10の場合にのみ初期化できます;
(2)Finalはクラス変更できます。つまり、現在のクラスを継承できません(finalクラスAnimal)
(3 )Finalはメソッド変更できますが、現在変更されているメソッドはオーバーライドできません

2.多形性:

多形性:実際には一種の考え

コードレベルから:親クラスはサブクラスオブジェクトを参照し、親クラスとサブクラスには同じ名前のオーバーライドメソッド(オーバーライド)があります。同じ名前のオーバーライドメソッドが親クラスの参照を通じて呼び出されると、次のように表示されます。さまざまな行動、そのようなさまざまな行動を示すプロセス、この種の考え方は多形性と呼ばれます。

事前知識:
ここに写真の説明を挿入

アップキャスト:親クラスの参照、サブクラスオブジェクトの参照
①直接割り当て②メソッドのパラメータ受け渡し③戻り値

動的バインディング
1。親クラスの参照、サブクラスのオブジェクトの参照(アップキャスト)
2。親クラスの参照を介して、サブクラスと親クラスによって書き換えられたメソッドを呼び出します
(構築メソッドも動的にバインドされます)

多形性の例:

class Shape {
    
    
    public void draw() {
    
    
    }
}
class Cycle extends Shape {
    
    
    @Override
    public void draw() {
    
    
        System.out.println("画一个⚪圈!");
    }
}
class Rect extends Shape {
    
    
    @Override
    public void draw() {
    
    
        System.out.println("画一个♦");
    }
}

public class oo2 {
    
    
    public static void drawMap(Shape shape) {
    
    
        shape.draw(); //多态的核心
    }

    public static void main(String[] args) {
    
    
        Shape shape1 = new Cycle();
        Shape shape2 = new Rect();
        drawMap(shape1);
        drawMap(shape2);
    }
}

動作結果:
ここに写真の説明を挿入

多形性を使用する利点:

1.クラスの呼び出し元がクラスを使用するコストがさらに削減されます。
カプセル化とは、クラスの呼び出し元がクラスの実装の詳細を知る必要がないことを意味します。多態性により、クラスの呼び出し元はクラスのタイプが何であるかさえ知らなくても、知る必要があるだけです。このオブジェクトは特定のメソッドを持つことができます。
したがって、多態性はカプセル化のさらなるステップとして理解でき、クラスの呼び出し元がクラスを使用するコストを削減できます。

2.コードの「サイクロコンプレキシティ」を減らし、多数のif-elseの使用を回避できます
(サイクロコンプレシティ:コードの一部で条件ステートメントとループステートメントの出現数)

3.より強力なスケーラビリティ

おすすめ

転載: blog.csdn.net/qq_45658339/article/details/109008486