1. ホーム
  2. java

[解決済み] Javaで継承を禁止する正当な理由とは?

2022-04-15 06:25:24

質問

Javaで継承を禁止する良い理由は何ですか?例えば、finalクラスや単一のプライベートパラメータレスコンストラクタを使用するクラスを使用することです。メソッドをfinalにする良い理由は何ですか?

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

ここで最も参考になるのは、Joshua Bloch氏の素晴らしい著書「Effective Java」の項目19、「Design and document for inheritance or else prohibit it"」(継承の設計と文書化、さもなければ禁止)です。(これは第2版では項目17、第1版では項目15です。) 本当は読むべきですが、要約してみます。

継承されたクラスとその親との相互作用は、祖先が継承されるように設計されていない場合、意外と予測不可能なことがあります。

したがって、クラスは2種類に分ける必要があります。

  1. クラス になるように設計されています。 拡張 そして、その方法を説明するための十分なドキュメントを備えています。

  2. 授業内容 マーク 最終

純粋に内部的なコードを書いているのであれば、これは少しやりすぎかもしれません。しかし、クラスファイルに5文字を追加することに伴う余分な労力は、非常に小さいものです。もし、内部で利用するためだけに書いているのであれば、将来のコーダーはいつでも「final」を削除することができます。これは、「このクラスは継承を考慮して設計されていません」という警告と考えることができます。