ポリモーフィズムは、参照変数がどのクラス インスタンス オブジェクトを指すかを参照します。参照変数によって発行されるメソッド呼び出しは、どのクラスに実装されたメソッドです。その中に存在する必要があります。プログラムの実行中にのみ決定できます。 (推奨学習: java コース)
特定のクラスはプログラムの実行時に決定されるため、ソースプログラムのコードを変更することなく参照変数を各クラスにバインドできます。クラスが実装されると、参照によって呼び出される特定のメソッドがそれに応じて変更されます。つまり、プログラムの実行時にプログラムにバインドされる特定のコードは、プログラム コードを変更せずに変更でき、プログラムが複数の実行状態を選択できるようになります。多態性、性別です。
機能:
サブクラスを指す親クラス参照は上方に変換されており、親クラスが所有するメソッドとプロパティにのみアクセスできます。サブクラス メソッドが存在しても親クラスに存在しない場合、メソッドがオーバーロードされている場合でも参照は使用できません。
サブクラスが親クラスの一部のメソッドをオーバーライドする場合、これらのメソッドを呼び出すときは、サブクラスで定義されたメソッドを使用する必要があります (動的接続、動的呼び出し)。
Java がポリモーフィズムを実現するには、継承、書き換え、上方変換という 3 つの条件が必要です。
呼び出される優先度メソッド、優先度は次のとおりです: this.show(O)、super.show(O)、this.show((super)O)、super.show((super )O )。
ポリモーフィズムの実装原理
Java におけるオブジェクト メソッドの呼び出しは、クラス情報内のメソッド テーブルに依存して実装されます。
一般に、オブジェクトのメソッドが呼び出されるとき、JVM はオブジェクト クラスのメソッド テーブルを検索してメソッドの直接参照アドレスを決定し、アドレスを取得した後でのみ実際にメソッドを呼び出します。 。
スーパー クラスは親クラスのメソッドを継承します。メソッドがオーバーライドされていない場合、呼び出しは親クラスのメソッドを指します。メソッドをオーバーライドする場合は、クラスのコード領域を指します。
ただし、スーパークラスには親クラスのメソッドテーブルが含まれます。
Java プログラムの実行中、クラス関連の情報がメソッド領域に配置されることはわかっています。この情報の中には、メソッド テーブルと呼ばれる領域があり、この領域には、Java プログラムによって定義されたすべてのメソッドに関する情報が含まれています。 type. およびこれらのメソッドの実際のコードへのポインタ。
以上がJava はどのようにしてポリモーフィズムを実装するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。