1. ホーム
  2. java

[解決済み] なぜJavaは静的メソッドのオーバーライドを認めないのですか?

2022-03-17 07:38:31

質問

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

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

どのように解決するのですか?

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

これには、Javaの設計に影響を与える2つの考慮事項がありました。ガベージコレクションやポリモーフィック呼び出しもその一部です)Javaの開発者は、それを避けようと決意していました。もう1つは、Javaのターゲット層はC++の開発者であるという判断です。静的メソッドをそのように動作させることは、C++プログラマにとって親しみやすいという利点があり、また、どのメソッドを呼び出すかを実行時まで待つ必要がないため、非常に高速に動作することができました。