オブジェクト指向プログラミング (OOP) の 3 つの特性の多態性


オブジェクト指向プログラミング (OOP) の 3 つの主要な機能のカプセル化
オブジェクト指向プログラミング (OOP) の 3 つの主要な機能の継承

序文

「賢くなるよりも、明確である方が良い。賢くなるよりも、明確である方が良い。」 - グレッグ・マッキャン

1. ポリモーフィズム

最後の授業では、シャオヘイとシャオパンは新しくクラスに来た美しいお嬢様にとても惹かれ、二人は前よりも熱心に勉強しました。3人はいつも最前列に座るのが好きなので、自然とコミュニケーションを取る機会も増え、徐々に仲良くなっていき…。

今日は 10 月 24 日なので、James Gosling 教授 (James Gosling) が不思議な贈り物を持ってクラスにやって来ました。生徒たちは教授が大きなバッグを運んでいるのを見てとても興味津々でした。私は彼がプレゼントを脇に置いたのを見て、こう言いました。「生徒の皆さん、今日はプログラマーの日です。先生は授業に真剣に取り組む生徒のために素晴らしい贈り物を用意しました。そして、最高の成績を収めた 2 人の生徒がそれを受け取ることができます。」
ここに画像の説明を挿入
後列に座っていたサムはこう考えました。「プログラマーの日が日曜日なのに、なぜまだ授業があるのでしょう?」

先生は、あらかじめ用意されたpptを手際よく開いてくださいました 今日お話したいのは、オブジェクト指向プログラミングの3つ目の特徴であるポリモーフィズムについてです。

ポリモーフィズムとは、オブジェクト変数が複数の実際の型を示すことができる現象を指します。
ポリモーフィズムとは、同じインターフェイスが異なるオブジェクトに対して異なる結果を生成することを意味します。
下図に示すように:
ここに画像の説明を挿入
多態性が存在するための 3 つの必要条件
① 継承 (継承)
② オーバーライド (オーバーライド)
③ スーパークラスの参照がサブクラス オブジェクトを指す: Parent p = new Child(); // 上向き変換
ここに画像の説明を挿入
コードは次のように(例):

class Shape {
    
    
    void draw() {
    
    }
}
 
class Circle extends Shape {
    
    
    void draw() {
    
    
        System.out.println("Circle.draw()");
    }
}
 
class Square extends Shape {
    
    
    void draw() {
    
    
        System.out.println("Square.draw()");
    }
}
 
class Triangle extends Shape {
    
    
    void draw() {
    
    
        System.out.println("Triangle.draw()");
    }
}

簡単に説明すると、Shape オブジェクトを作成するときに、その参照をサブクラス オブジェクト Shape s = new Square(); call s.draw(); // 円を描画します。等号の左側にあるオブジェクトが実行できることだけを考慮し、右側にあるオブジェクトの他の固有の機能には注意しません。

ポリモーフィックな方法でメソッドを呼び出す場合は、まずそのメソッドがスーパークラスに存在するかどうかを確認し、存在しない場合はコンパイル エラーが発生します。存在する場合は、サブクラス内の同じ名前のメソッドを呼び出します。

ポリモーフィズムの利点: プログラムに優れた拡張性を持たせることができ、すべてのクラスのオブジェクトに対して共通の処理を実行できます。

注:
型キャストは継承階層内でのみ実行できます。
スーパークラスをサブクラスにキャスト (ダウンキャスト) する前に、instanceof でチェックする必要があります。

Xiaopang は「なぜ、instanceof をチェックする必要があるのですか?」と尋ねました。
Xiao Hei は次のように答えました。オブジェクトが変換対象の別のオブジェクトと継承関係を持たない場合、エラーが発生します。上記の例で言うと、 Shape s = new Shape(); Rectangle r = (Rectangle) s; このうち、Rectangle は Shape クラスを継承していないため、変換は失敗します。
ここに画像の説明を挿入
シャオヘイとシャオパンは教室で最も真剣で、質問したり問題を解決したりすることを積極的に考えるため、知識を習得する能力が他の人よりも早いです。教授は隣で贈り物を手に取り、2 つの賞を受賞した学生は…と厳かに発表しました。

結局、シャオヘイとシャオパンは美しい青い目の女性に贈り物を贈り、それ以来、二人の友情は黄金の鉄の三角形のように堅固になりました。学びの道で、共に成長し、共に励まし合い、最終的には優秀なプログラマーになるという理想を実現し、自分の能力を使って世界を変え、人生をより便利にします。不思議な贈り物とは何かというと、まずはその話から…。


2. まとめ

小さなプログラマーの日常
ここに画像の説明を挿入
ここに画像の説明を挿入
さて、今回の OOP コンテンツは終了です。今日は特別な日です。世界を変え続けるあなたも、休息と娯楽に注意を払ってください。結局のところ、身体はコーディングの資本。

おすすめ

転載: blog.csdn.net/weixin_48627356/article/details/120934564