Java の 3 番目の主要な機能であるポリモーフィズムは、誰もがよく知っているはずですが、この抽象的な概念については常に曖昧な部分があると思います。この章では Think in Java で多くの説明があり、具体的に 3 つの問題について説明しました。
1.多态解决了什么问题? 2.什么是多态? 3.多态的扩展
ポリモーフィズムは型の分離の問題を解決します。ポリモーフィズムにより、私たちは特定の型に注意を向けることができなくなり、型のことを忘れるようになります。特定の型に注意を払う必要がないため、多くのコードを再利用でき、コードの一部を使用して同様の問題を解決できます。これは開発プロセスにおいて大きな役割を果たします。この分離により、各レイヤーの使用の関与が軽減されます。一般に、ポリモーフィズムによって解決される問題は、型の分離です。イデオロギー的に言えば、ジャンルのことを忘れさせてくれます。
この質問をすると、私が非常に抽象的で概念的な説明をしたいと無意識のうちに思うかもしれませんが、実際、私が説明したいのはこれらの概念的なことではありません。これらについては、Baidu にアクセスしてください。さて、本題に戻りますが、ポリモーフィズムとは何でしょうか?ポリモーフィズムには実際には他にもいくつかの名前がありますが、私はそのうちの 1 つであるランタイム バインディングを好みます。
この言葉を説明するときは、まずバインディングについて理解しましょう。バインディングは、実行前バインディングと実行時バインディングに分けられます。実行前にバインドするということは、プログラムがバインドされていないときに使用されるメソッドの特定の種類をプログラムがすでに認識していることを意味します。逆に、ランタイム バインディングは、プログラムが実行前に使用される特定のメソッド タイプを認識しないことを意味します。使用される特定のメソッド タイプはランタイムのみが認識します。これにより、特定の Type を知る必要がなくなるという効果も得られます。
Java の全体的なメカニズムはランタイム バインディングを使用します。プロパティ、プライベートメソッドおよび静的メソッドを除きます。
ポリモーフィズムは親クラスのメソッドのみを制御でき、サブクラスによって拡張されたメソッドを操作できないことはわかっていますが、必ずこの状況に遭遇します。そうすると、この時点ではアップコンバートは使えなくなり、ダウンコンバートを使うことになります。しかし、ここには問題があります。つまり、この型が変換する型であるかどうかが分からず、変換エラーが発生します。これは C++ では安全ではありませんが、Java にはダウン コンバートというメカニズムがあります。セキュリティ制御を実現するには、変換を強制的にチェックする必要があります。そうでない場合は、ClassCastException エラーが報告されます。
関連する推奨事項:
Java の 3 つの主要な特性、カプセル化、継承、ポリモーフィズムについての理解
Java の 3 つの主要な特性のうち、ポリモーフィズムについての深い理解
以上がJava ポリモーフィック理解の 3 番目の主要な特徴の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。