Java コンストラクターの継承: なぜ継承しないのか?
他のオブジェクト指向言語とは異なり、Java はコンストラクターを継承しません。サブクラスがスーパークラスから継承する場合、スーパークラスのコンストラクターは自動的に取得されません。代わりに、サブクラスは、super キーワードを使用して適切なスーパークラス コンストラクターを呼び出す独自のコンストラクターを明示的に定義する必要があります。
Java にコンストラクターの継承がない理由
主な理由この設計上の選択は、コンストラクターのカプセル化を維持することです。コンストラクターが継承された場合、Object クラスからの継承により、最終的にすべてのクラスがパラメーターのないコンストラクターを持つことになります。これは、曖昧さと潜在的なセキュリティ問題につながる可能性があります。
たとえば、FileInputStream にパラメーターのないコンストラクターがある場合、次のコードは問題になります:
FileInputStream stream = new FileInputStream();
ストリームを開くファイルは何ですか? ?このあいまいさは、必要なパラメータを指定する独自のコンストラクタを明示的に定義することをサブクラスに要求することによって排除されます。
明示的なコンストラクタの利点
この設計上の決定には、次のような利点もあります。
以上がJava コンストラクターの継承: Java はなぜコンストラクターを継承しないのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。