ホームページ >Java >&#&ベース >Javaでポリモーフィズムを実装する方法

Javaでポリモーフィズムを実装する方法

尚
オリジナル
2019-12-04 11:48:053713ブラウズ

Javaでポリモーフィズムを実装する方法

Java ポリモーフィズムの概要: (推奨: java ビデオ チュートリアル )

ポリモーフィズムは、オブジェクト指向プログラミング言語の重要な機能です。 Basic クラスのポインターまたは参照は派生クラスのオブジェクトを指し、メソッドの動的バインディングは特定のアクセス中に実装されます。 Java メソッド呼び出しの動的バインディングの実装は主にメソッド テーブルに依存しますが、クラス参照呼び出し (invokevitual) とインターフェイス参照呼び出し (invokeinterface) による実装は異なります。

Java でポリモーフィズムを実装するには、次の 3 つの条件が必要です:

1. 継承関係が必要です。

2. メソッドの書き換えが必要です。

3. サブクラス オブジェクトを指す親クラスからの参照が必要です。

クラス参照呼び出しの一般的なプロセスは次のとおりです: Java コンパイラは Java ソース コードをクラス ファイルにコンパイルします。コンパイル プロセス中に、呼び出されたシンボル参照が静的型に従ってクラス ファイルに書き込まれます。

実行中、JVM はクラス ファイルに従って呼び出しメソッドのシンボリック参照を見つけ、次に静的型メソッド テーブル内のオフセットを見つけて、このポインタに基づいてオブジェクトの実際の型を決定します。実型のメソッド テーブルを使用する場合、オフセットは静的型のメソッド テーブルのオフセットと同じです。実型のメソッド テーブルにメソッドが見つかった場合は、そのメソッドが直接呼び出されます。それ以外の場合は、静的型のメソッド テーブルのオフセットと同じになります。親クラスのメソッドはオーバーライドされていません。継承関係に従って下から上に検索します。

Javaでポリモーフィズムを実装する方法

上の図からわかるように、プログラムの実行中に特定のクラスが必要になると、クラス読み込みサブシステムは対応するクラス ファイルを JVM に読み込みます。そして、メソッド コード、クラス変数、メンバー変数、このブログ投稿の内容 主な議論方法の表。この型情報はメソッド領域に格納されます。

このメソッド領域の型情報は、ヒープに格納されるクラス オブジェクトとは異なることに注意してください。メソッド領域では、このクラスの型情報は一意のインスタンスのみを持ち (つまり、各スレッドで共有されるメモリ領域になります)、ヒープ内にこのクラスのオブジェクトが複数存在する可能性があります。メソッド領域の型情報には、ヒープ内のクラス オブジェクトを通じてアクセスできます。 Java のリフレクション メカニズムと同様に、クラスのすべての情報にはクラス オブジェクトを通じてアクセスできます。

Java についてさらに詳しく知りたい場合は、Java 基本チュートリアル 列に注目してください。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。