ポリモーフィズム: ポリモーフィズムとは、異なるサブタイプのオブジェクトが同じメッセージに対して異なる応答を行えるようにすることを指します。簡単に言うと、同じメソッドが同じオブジェクト参照で呼び出されますが、実行される処理は異なります。ポリモーフィズムは、コンパイル時ポリモーフィズムと実行時ポリモーフィズムに分けられます。
オブジェクトのメソッドがオブジェクトによって外部に提供されるサービスとみなされる場合、実行時ポリモーフィズムは次のように説明できます。システム A がシステム B によって提供されるサービスにアクセスするとき、システム B には複数のメソッドがあります。しかし、すべてがシステム A に対して透過的です (電気シェーバーがシステム A であり、その電源システムがシステム B であるのと同じです。システム B は、バッテリー、AC、さらには太陽エネルギーによっても電力を供給できます。システム A)はクラス B オブジェクトを通じて電源メソッドを呼び出すだけですが、電源システムの基礎となる実装が何であるか、またどのように電力を取得するかはわかりません)。
メソッドのオーバーロード (オーバーロード) はコンパイル時ポリモーフィズム (フロント バインディングとも呼ばれます) を実装し、メソッド オーバーライド (オーバーライド) は実行時ポリモーフィズム (ポスト バインディングとも呼ばれます) を実装します。
実行時のポリモーフィズムはオブジェクト指向の本質です。ポリモーフィズムを実現するには、次の 2 つのことを行う必要があります:
メソッドの書き換え (サブクラス親クラスを継承し、親クラスの既存のメソッドまたは抽象メソッドをオーバーライドします);
オブジェクト モデリング (親の型参照を使用してサブタイプ オブジェクトを参照するため、同じ参照が同じメソッドでも、サブクラス オブジェクトに応じて異なる動作が示されます)。
java中的引用变量有两个类型:一个编译时类型,一个是运行时类型。编译时类型由声明该变量使用的类型决定,运行时类型由实际赋给 该变量的对象决定。如果编译时类型与运行时类型不一致,就可能出现所谓的多态。——疯狂java讲义
実行時ポリモーフィズムの使用例は次のとおりです。
public class PolyTest5 { public void run(Car car)//这样利用公共的父类就屏蔽了子类之间的差异性,可以应对所有的车. { car.run();//只要子类继承了car都可以作为参数传入方法中.如果没有多态,就要有对应每个类的方法.非常的麻烦. } public static void main(String[] args) { PolyTest5 test = new PolyTest5(); Car car = new BMW(); test.run(car); QQ qq = new QQ(); test.run(qq);//向上类型转换. } } class Car { public void run() { System.out.println("car is running"); } } class BMW extends Car { public void run() { System.out.println("BMW is running"); } } class QQ extends Car { public void run() { System.out.println("QQ is running"); } }
ポリモーフィズムの 3 つの要素: 1.継承 2. 書き換え 3. 親クラスの参照は、子クラスのオブジェクトを指します。
関連する学習の推奨事項: Java 基本チュートリアル
以上がJavaのポリモーフィズムを理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。