カプセル化・情報隠蔽の思想 ── なぜ private にするのか、getter/setter は何のためにあるか
「とりあえず private にする」から脱却する。情報隠蔽の原則がなぜ生まれたか、public フィールドの何が問題か、getter/setter をただ生やすアンチパターン、イミュータブル設計との関係を解説。
「とりあえず private にする」から脱却する。情報隠蔽の原則がなぜ生まれたか、public フィールドの何が問題か、getter/setter をただ生やすアンチパターン、イミュータブル設計との関係を解説。
なぜ Effective Java は「継承よりコンポジション」と言うのか。is-a と has-a の違い、深い継承ツリーが壊れる理由、コンポジションへの書き換え方を具体例で解説。
「Write once, run anywhere」「型安全性」「GCによる自動メモリ管理」「オブジェクト指向の徹底」。Java の各設計判断がなぜそうなったのかを、C/C++ の教訓と1990年代のソフトウェア危機から読み解く。
親型の変数に子のインスタンスを入れてメソッドを呼ぶと、なぜ子のメソッドが動くのか。仮想メソッドテーブル(vtable)・動的ディスパッチ・instanceof・ClassCastException をメモリ構造から解説。
インターフェースと抽象クラスの違い、default メソッド、sealed interface、いつどちらを使うべきかを実例で解説します。