[解決済み] 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種類に分ける必要があります。
-
クラス になるように設計されています。 拡張 そして、その方法を説明するための十分なドキュメントを備えています。
-
授業内容 マーク 最終
純粋に内部的なコードを書いているのであれば、これは少しやりすぎかもしれません。しかし、クラスファイルに5文字を追加することに伴う余分な労力は、非常に小さいものです。もし、内部で利用するためだけに書いているのであれば、将来のコーダーはいつでも「final」を削除することができます。これは、「このクラスは継承を考慮して設計されていません」という警告と考えることができます。
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
JDKの設定時にjava.dllが見つからない、java SE Runtime Environmentが見つからない問題が発生しました。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] Javaにおける静的クラス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
springboot project MIMEタイプ text/htmlで転送された静的ファイルを読み込む。
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
jd-gui Java Exceptionが発生しました。
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。
-
[解決済み] Javaにおける "final class "の意味とは?