Java の基本 - ポリモーフィズム

巴扎黑
リリース: 2017-06-26 11:30:00
オリジナル
1500 人が閲覧しました

ポリモーフィズムとは、異なるタイプのオブジェクトが同じメッセージに応答できるようにすることを指します。これには、柔軟性、抽象化、動作の共有、コードの共有という利点があり、最大限の活用と簡素化、および読み込み速度を実現します。

1.ポリモーフィズムの役割

型間の結合関係を排除します。つまり、異なるオブジェクトで同じイベントが発生すると、異なる結果が生じます。

2. ポリモーフィズムの実装形式

1. オーバーロード (同じクラスで発生)

2. ポリモーフィズムの利点

1. 2拡張性

3. インターフェイス (ポリモーフィズムは非常に面倒で、メソッド シグネチャを通じてサブクラスに共通のインターフェイスを提供します)

5. 柔軟性

注: これらの利点は架空のものであり、実際に適用する場合にのみ実現できます。彼ら。

4. ポリモーフィズムが存在するための 3 つの前提条件

1. 継承関係が存在する必要があります

2. サブクラスは親クラスのメソッドをオーバーライドする必要があります

3.

コード 例: 親クラス Animal とサブクラス Dog を定義します

 1 //父类——Animal 2 public class Animal { 3     int num = 44; 4     static int age = 2; 5  6     public void eat() { 7         System.out.println("动物都需要吃东西"); 8     } 9 10     public static void sleep() {11         System.out.println("动物需要睡觉");12     }13 14     public void run() {15         System.out.println("长腿的动物爱奔跑");16     }17 }
ログイン後にコピー

 1 //子类——Dog 2 public class Dog extends Animal { 3     int num = 5; 4     static int age = 5; 5     String name = "Tom"; 6  7     public void eat() { 8         System.out.println("我爱吃狗粮"); 9     }10 11     public static void sleep() {12         System.out.println("我是一只不爱睡觉的活泼狗狗");13     }14 15     public void catchMouse() {16         System.out.println("我喜欢多管闲事");17     }18 19 }
ログイン後にコピー

 1 //测试类 2 public class Demo_Test { 3     public static void main(String[] args) { 4         Animal a = new Dog(); 5         a.eat(); 6         a.sleep(); 7         a.run(); 8          9         System.out.println(a.num);10         System.out.println(a.age);11     }12 }
ログイン後にコピー

Notes デモ:

上記の出力結果 (7) から、描画可能:

1) メンバー変数: 親クラスを出力しますが、サブクラスは出力されません

2) メンバーメソッド: 親クラスが静的である場合は親クラスを出力し、非静的である場合は、サブクラスを直接出力します

3) 左側 5. 静的メンバーを呼び出すときに間違ったメソッドを使用しているため、6 でエラーが発生します。 (正しいスクリーンショットは以下に表示されます)

4) 親クラスにないメソッド(a.catchMouse();)を呼び出すと、エラーが報告されます。 )

現時点では、ポリモーフィズムは独自のプロパティとメソッドを使用できません。これがポリモーフィズムの欠点ですが、どうすれば解決できますか?

答え: この親クラス参照をサブクラス オブジェクト a にポイントし、強制的に Dog 型に戻します。このように、 a は Dog 型の参照であり、Dog オブジェクトを指します。

以上がJava の基本 - ポリモーフィズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート