ポリモーフィズムとは、異なるタイプのオブジェクトが同じメッセージに応答できるようにすることを指します。これには、柔軟性、抽象化、動作の共有、コードの共有という利点があり、最大限の活用と簡素化、および読み込み速度を実現します。
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 }
上記の出力結果 (7) から、描画可能:
1) メンバー変数: 親クラスを出力しますが、サブクラスは出力されません
2) メンバーメソッド: 親クラスが静的である場合は親クラスを出力し、非静的である場合は、サブクラスを直接出力します
3) 左側 5. 静的メンバーを呼び出すときに間違ったメソッドを使用しているため、6 でエラーが発生します。 (正しいスクリーンショットは以下に表示されます)4) 親クラスにないメソッド(a.catchMouse();)を呼び出すと、エラーが報告されます。 )
現時点では、ポリモーフィズムは独自のプロパティとメソッドを使用できません。これがポリモーフィズムの欠点ですが、どうすれば解決できますか?
答え: この親クラス参照をサブクラス オブジェクト a にポイントし、強制的に Dog 型に戻します。このように、 a は Dog 型の参照であり、Dog オブジェクトを指します。
以上がJava の基本 - ポリモーフィズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。