質問: 先日、Javaの継承を習いました。とても便利な機能に見える反面、ふと疑問が湧きました。 スーパクラスを継承したサブクラスのオブジェクトは、継承したスーパクラスのメソッドを使うことができますが、呼び出す際に 「サブクラスの中から呼び出されたメソッドを探す→無いのでスーパクラスの中から探す」 という手順を踏んでいるはずです。 この手順を踏むことによって、直接サブクラスのオブジェクトのメソッドを使用する場合より一段階多く手間をかけているはずですが、このことによってプログラムが遅くなったりするのでしょうか?それとも誤差レベルの遅延で気にしなくてよいのでしょうか?
回答: > > 呼び出す際に > > 「サブクラスの中から呼び出されたメソッドを探す→無いのでスーパクラスの中から探す」 > > という手順を踏んでいるはずです。 > > > いえ、そうではありません。 * クラスごとに「どのメソッドがどこにある」という対応表があって、Javaの場合は`final`でなければどんな呼び出しに対してもその対応表を使うので、毎回メソッドを探す必要はありません。 * 今どきの実用的なJVMでは**JITコンパイル**が入りますので、クラスが決まっていれば特定のメソッドを呼ぶように決め打つこともあります。