Java ではなぜ静的メソッドのオーバーライドが許可されないのでしょうか? 質問する

Java ではなぜ静的メソッドのオーバーライドが許可されないのでしょうか? 質問する

静的メソッドをオーバーライドできないのはなぜですか?

可能であれば、例を挙げてください。

ベストアンサー1

オーバーライドは、クラスのインスタンスがあることに依存します。ポリモーフィズムのポイントは、クラスをサブクラス化でき、それらのサブクラスを実装するオブジェクトは、スーパークラスで定義され、サブクラスでオーバーライドされた同じメソッドに対して異なる動作を持つということです。静的メソッドはクラスのどのインスタンスにも関連付けられていないため、この概念は適用されません。

Java の設計を推進する上で、これに影響を与えた 2 つの考慮事項がありました。1 つはパフォーマンスに関する懸念です。Smalltalk は遅すぎるという批判が多くありました (ガベージ コレクションとポリモーフィック呼び出しがその一部でした)。Java の作成者はそれを避けることを決意していました。もう 1 つは、Java の対象ユーザーは C++ 開発者であるという決定でした。静的メソッドをそのように動作させることは、C++ プログラマーにとって馴染みやすいという利点があり、また、どのメソッドを呼び出すか実行時まで待つ必要がないため、非常に高速でした。

おすすめ記事