ポリモーフィズムの簡単な理解:
Student クラスは Person クラスを継承し、Student クラスのオブジェクトは Student と a の両方になります。 person class
ポリモーフィズムには 2 つのプレゼンテーション形式があります:
1. メソッドのポリモーフィズム:
(1) メソッドのオーバーロード:
で渡されるパラメータの種類や数に応じて、同じメソッドでも異なる機能を実装できます。 (2) メソッドのオーバーライド: 実装サブクラスによって、同じメソッドでも異なる機能が実装される場合があります。 Implementation
2. オブジェクトのポリモーフィズム:
親クラスとサブクラスのインスタンス間の変換処理
(1) オブジェクトの上方変換: 親クラス 親クラス インスタンス = new サブクラス インスタンス ();自動的に変換が完了します
(2) オブジェクトの下位変換: subclass subclass instance = new (subclass)parent class instance (); 必須 変換の完了
関連ビデオ チュートリアルの共有:java無料のビデオ チュートリアル
ポリモーフィズムの最終的な表現:
1. 親クラスの参照変数はサブクラス オブジェクトを指すことができます
2.ポリモーフィズムの前提は、子と親のクラス関係またはクラス実装インターフェイス関係が存在する必要があり、そうでない場合はポリモーフィズムを実現できません。
3. ポリモーフィズムを使用する場合ステートフルな親クラスの参照変数がメソッドを呼び出すと、書き換えられたサブクラスのメソッドは
多態性メンバー変数:
1 と呼ばれます。コンパイル時、参考: 親クラスにはそのような変数はありません。ある場合は、コンパイルは成功します。そうでない場合、コンパイルは失敗します。
2. 実行時は、親クラスの変数値が実行されます。
メンバ変数のコンパイル 動作は、親クラスの多態性メンバー メソッド
:
1. コンパイル時に、親クラスにそのようなメソッドがあるかどうかを参照します。存在する場合、コンパイルは実行されます。そうでない場合、コンパイルは失敗します。
2. 実行時。実行されるのはサブクラスのオーバーライドされたメソッドです
メンバー メソッドをコンパイルするときは親クラスを確認し、実行するときはサブクラスを確認します
2 つの変換メソッドの理解オブジェクトの数:
1. オブジェクトの上方変換:
上方変換後、サブクラス オブジェクトは親クラスが所有するメソッドのみを呼び出すことができ、親クラスが所有するメソッドを呼び出すことはできません。サブクラスのみが所有するメソッド。これは上方変換によって実現されます。ポリモーフィズムの使用
2. オブジェクトの下方変換:
オブジェクトが一意のメソッドを使用したい場合は、上向き変換後の親クラスではなく、サブクラスのメソッドです。オブジェクトのダウンキャストを使用する必要があります。
コードのデモ:
public class Person { public void Eat(){ //在person类中定义一个吃的抽象方法 } } public class Student extends Person{ public void Eat(){ System.out.println("学生吃学校食堂");//重写父类中的抽象方法 } public void Learning() { System.out.println("学生在学习");//定义一个student类特有的方法 } } public class Test { public static void main(String[] args) { // TODO 自动生成的方法存根 Person p=new Student();//通过向上转型定义一个p对象 p.Eat();//这是子父类共有的方法 p.Learning(); } }
このコードでは、上向きキャストを通じてサブクラス固有のメソッドを呼び出します。
学習メソッドが親クラスで定義されていません。ただし、サブクラス固有のメソッドを呼び出す必要があるので、このとき下方変換を実装する必要があります。
補足コードは次のとおりです:
Student stu=(Student)p;//将p对象向下转型实现方法调用 stu.Learning();
関連するチュートリアルをさらに学習したい場合javaQuickstart
にアクセスしてください。以上がJava オブジェクト指向ポリモーフィズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。