Looking for java Answers? Try Ask4KnowledgeBase
Looking for java Keywords? Try Ask4Keywords

Java Language動的メソッドディスパッチ


前書き

ダイナミックメソッドディスパッチとは何ですか?

動的メソッドディスパッチは、オーバーライドされたメソッドへの呼び出しがコンパイル時ではなく実行時に解決されるプロセスです。オーバーライドされたメソッドが参照によって呼び出されると、Javaは参照するオブジェクトの型に基づいて実行するメソッドのバージョンを決定します。これは、ランタイムポリモーフィズムとしても知られています。

これを例を用いて見ていきます。

備考

  • 動的バインディング=遅延バインディング
  • 抽象クラスはインスタンス化できませんが、サブクラス化することができます(子クラスの場合はBase)
  • 抽象メソッドは、実装なしで宣言されるメソッドです
  • 抽象クラスには、実装の有無にかかわらず宣言されたメソッドが混在することがあります
  • 抽象クラスがサブクラス化されている場合、サブクラスは通常、その親クラスのすべての抽象メソッドの実装を提供します。しかし、そうでなければ、そのサブクラスもabstractと宣言しなければならない
  • 動的メソッドディスパッチは、オーバーライドされたメソッドへの呼び出しを実行時に解決するメカニズムです。これは、javaがランタイムポリモーフィズムを実装する方法です。
  • アップキャスティング(Upcasting):サブタイプをスーパータイプにキャスティングし、継承ツリーまで上向きにします。
  • ランタイム多態性=動的多型

動的メソッドディスパッチ 関連する例